Obfuscation Challenge [закрыто]


24

Вы должны написать программу, которая выполняет одно из следующих действий.

  1. Только отображает «Hello World» больше ничего не делает
  2. Выход и ничего больше (без вывода, без ошибок.)
  3. Занимает одну строку ввода, анализирует ее как целое число, отображает первое, что много простых чисел (или выдает приятную ошибку, если задан ввод, который не может быть проанализирован как целое число, или если он меньше 0.)
  4. Имея одну строку ввода, он анализирует его на наличие символа акции и проверяет в режиме онлайн текущую стоимость акции и ее изменение.

Подвох, не должно быть видно, какую функцию он выполняет. А именно, для тех, кто смотрит на ваш код, не должно быть очевидно, какую функцию он будет выполнять. Кроме того, она может выполнять и иметь возможность выполнять только одну функцию (она не может выбирать и выбирать.) Насколько хороша программа, определяется тем, насколько неуверенно кто-то смотрит на нее, какова ее функция, а также насколько хорошо она знакома. человек с этим языком.

БОНУС: Если вы умным способом сделаете это, хотя для любого одного компилятора / интерпретатора и платформы программа также будет выполнять одну и ту же функцию, для разных компиляторов / интерпретаторов или платформ, она будет выполнять другую функцию. Этот бонус может быть получен только в том случае, если он сделан умно.

БОНУС: Если ваша программа содержит только код, способный выполнять одну функцию (ничего не сохранять, поскольку пустой код способен на это), и невозможно выполнить простое изменение, не связанное с функцией, чтобы позволить ей выполнять другую функцию. Например: если вы сделали

obfuscatedBool = 1g8uhad'l8fygrcetdu8y4fd/,.oe87fy4d --Magic
if obfuscatedBool: print "Hello World"

Не будет считаться, что obfuscatedBool можно сделать True или False, чтобы он печатал «Hello World» или ничего не делал соответственно.

Бонус бесконечности: если вы реализуете оба бонуса одновременно, вы волшебны.

ОТРИЦАТЕЛЬНЫЙ БОНУС: Использование библиотек с определенными способностями для выполнения функций.

Избиратели, примите во внимание бонусы, потому что победит программа с наибольшим количеством голосов!

Примечание. Если вы говорите, что делает ваша программа, обязательно используйте синтаксис спойлера!


2
Если честно, я не могу понять большую часть вопроса. Я иду дальше и скажу, что я понимаю только 4 пункта.
Исмаэль Мигель

Сделайте программу такой, чтобы она выполняла одну из 4 вещей, но никто не знает, что.
PyRulez

25
А как насчет бонусов? Серьезно, даже вопрос запутан.
Исмаэль Мигель

4
Так как это конкурс популярности, зачем бонус?
Исмаэль Мигель

1
@MukulKumar - как, собственно, мой смысл?
TheDoctor

Ответы:


43

Пробелы / Brainfuck / Python

'''начать''''''''''''  
Основной (арг) {   	  	   
	parseArgs = args.Find ( '^ ++++++++ ^ [<++++ [<++ <+++ <+++ <+ >>>> аз] <+ <+ <AZ [ >]> 0-9] << <--- * $ ')..;
    for (int i = 0; Range (GetLength (parseArgs)); i ++) {validateArg (parseArgs (i));}  	 	
	//название
    string stockName = "";		 		  
	// цикл
    for (int i = 0; Range (GetLength (parseArgs)); i ++) {		 		  
	// Проверка
     	если (matchFound = Find ( 'а + г + А + .Z.0 + 9 + _ +. << * $') {	 				
	//нашел
     	parseArgs (я) .split ( '> -> +..');}     
	
     	for (int j = 0; Range (GetLength (parseArgs (i))); j ++) {	 			
	//скачать
    data = ConvertTo.String (eval ("curl -get http://some-stock-ticker-source-url-here.com"));	 				
	Распечатать;
    печать данных;			  	 
	
    // разделитель строк		 		  
	
    Распечатать "--------.";		  	  
	}}
}  


''финиш'''''''''''''''

Wikipedia: Пробелы (язык программирования)
Онлайн переводчик пробелов для проверки ответа
Онлайн переводчик Brainfuck для проверки ответа

Выход (Пробел / Брейнфук):

Привет, мир
Ouput (Python):
Ничего, но работает успешно.


2
Это действительно круто! Я думаю, что вы должны обновить описание. Разве очевидный код не является третьей программой, которая тоже что-то делает? Также, если бы вы могли поменять одно из мозговых полей или пробелов для выполнения другой функции, я бы дал вам бонус INFINITY!
СебастьянH,

1
На каком языке претендует программа?
durron597

1
@ durron597 Это странный гибрид C # и Python. Я собирался сделать все это в C #, но было сложно заставить синтаксис работать на всем протяжении.
grovesNL

@SebastianH Это притворная программа, маскирующая действительную функцию.
grovesNL

Функциональность Python слишком прозрачна. После того, как вы увидите первые 3 символа, вам просто нужно отсканировать оставшуюся часть кода на предмет конца строкового литерала.
user2357112 поддерживает Monica

40

JS

゚ω゚ノ=/`m´)ノ~┻━┻//*´∇`*/['_'];o=(゚ー゚)=_=3;c=(゚Θ゚)=(゚ー゚)-(゚ー゚);(゚Д゚)=(゚Θ゚)=(o^_^o)/(o^_^o);(゚Д゚)={゚Θ゚:'_',゚ω゚ノ:((゚ω゚ノ==3)+'_')[゚Θ゚],゚ー゚ノ:(゚ω゚ノ+'_')[o^_^o-(゚Θ゚)],゚Д゚ノ:((゚ー゚==3)+'_')[゚ー゚]};(゚Д゚)[゚Θ゚]=((゚ω゚ノ==3)+'_')[c^_^o];(゚Д゚)['c']=((゚Д゚)+'_')[(゚ー゚)+(゚ー゚)-(゚Θ゚)];(゚Д゚)['o']=((゚Д゚)+'_')[゚Θ゚];(゚o゚)=(゚Д゚)['c']+(゚Д゚)['o']+(゚ω゚ノ+'_')[゚Θ゚]+((゚ω゚ノ==3)+'_')[゚ー゚]+((゚Д゚)+'_')[(゚ー゚)+(゚ー゚)]+((゚ー゚==3)+'_')[゚Θ゚]+((゚ー゚==3)+'_')[(゚ー゚)-(゚Θ゚)]+(゚Д゚)['c']+((゚Д゚)+'_')[(゚ー゚)+(゚ー゚)]+(゚Д゚)['o']+((゚ー゚==3)+'_')[゚Θ゚];(゚Д゚)['_']=(o^_^o)[゚o゚][゚o゚];(゚ε゚)=((゚ー゚==3)+'_')[゚Θ゚]+(゚Д゚).゚Д゚ノ+((゚Д゚)+'_')[(゚ー゚)+(゚ー゚)]+((゚ー゚==3)+'_')[o^_^o-゚Θ゚]+((゚ー゚==3)+'_')[゚Θ゚]+(゚ω゚ノ+'_')[゚Θ゚];(゚ー゚)+=(゚Θ゚);(゚Д゚)[゚ε゚]='\\';(゚Д゚).゚Θ゚ノ=(゚Д゚+゚ー゚)[o^_^o-(゚Θ゚)];(o゚ー゚o)=(゚ω゚ノ+'_')[c^_^o];(゚Д゚)[゚o゚]='\"';(゚Д゚)['_']((゚Д゚)['_'](゚ε゚+(゚Д゚)[゚o゚]+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚Θ゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚)+(゚Θ゚))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚)+(゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o)+(o^_^o))+((o^_^o)-(゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o)+(o^_^o))+(゚ー゚)+(゚Д゚)[゚ε゚]+((゚ー゚)+(゚Θ゚))+(c^_^o)+(゚Д゚)[゚ε゚]+(゚ー゚)+((o^_^o)-(゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚Θ゚)+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+((゚ー゚)+(゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚)+(゚Θ゚))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚)+(゚Θ゚))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚)+(゚Θ゚))+((゚ー゚)+(o^_^o))+(゚Д゚)[゚ε゚]+(゚ー゚)+(c^_^o)+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o)-(゚Θ゚))+((゚ー゚)+(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚)+(゚Θ゚))+((゚ー゚)+(o^_^o))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((o^_^o)+(o^_^o))+((o^_^o)-(゚Θ゚))+(゚Д゚)[゚ε゚]+(゚Θ゚)+((゚ー゚)+(゚Θ゚))+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚Θ゚)+(゚ー゚)+(゚ー゚)+(゚Д゚)[゚ε゚]+(゚ー゚)+((o^_^o)-(゚Θ゚))+(゚Д゚)[゚ε゚]+((゚ー゚)+(゚Θ゚))+(゚Θ゚)+(゚Д゚)[゚o゚])(゚Θ゚))('_');

На оповещения "Hello World"
ответили по адресу /codegolf//a/3946/803
Так как я не придумал этот ответ, я сделал его вики-сообществом


28
Вы полностью уверены, что это не APL?
Мниип

2
@mniip О да! это JS. Демонстрация jsfiddle.net/7mqL8
Клайд Лобо

11
Я вижу смайлики повсюду ..
Торкил Холм-Якобсен

1
Это лучшее использование Unicode в JavaScript, которое я когда-либо видел!
Коул Джонсон

4
+1 за смайлик (o^_^o).
Амаль Мурали

31

Сборка MS-DOS x86

Поскольку он уже не запутан в процессе сборки, давайте сделаем его еще хуже! Это ДОЛЖНО работать с любым ассемблером, который может собираться в COM-файл, но я тестировал только с TASM для DOS tasm obfuse,tlink /t obfuse

.286
CODE SEGMENT
ASSUME CS:code, DS:code
ORG 0100h

start:
.586

xor eax, eax
xor ecx, ecx
xor edx, edx
xor ebx, ebx
xor edi, edi
xor esi, esi
stc
pushfd
rcr di, 8
mov cx, 35
cli
push edi
xor word ptr [di + 8], 2720
pushfd
sub bx, 64512
rcr ebx, 11
sub word ptr [di + 125], 61702
pop eax
dec dx
and word ptr [di + 4], cx
mov ecx, eax
sub byte ptr [di + 124], 21
xor eax, ebx
push eax
xor byte ptr [di + 127], 240
popfd
xor dword ptr [di], 179066414
pushfd
xor byte ptr [di + 11], dl
pop eax
mov bp, 8268
xor byte ptr [di + 123], 110
pop edx
add byte ptr [di + 10], 49
popfd
sti
and ecx, ebx
or word ptr [di + 4], bp
and eax, ebx
xor word ptr [di + 6], 23601
cmp eax, ecx
db 'u', 5
dec cl
movsx dx, cl
int 32

CODE ENDS
END start

Это самоизменяющийся код, который выполняет несколько функций:
1) Он изменяет первые 12 байтов на «Hello World [знак доллара]»
2) Он изменяет, казалось бы, неуместные 'dec cl' и 'movsx dx cl' на 'nop ',' mov ah, 9 ',' int 021h '
3) Все очень сильно перемежается друг с другом. Это также делает проверку флагов, чтобы увидеть, поддерживает ли ваш CPU CPUID.
4) Шестнадцатеричные значения преобразуются в десятичные, поэтому у вас нет никакой подсказки ....
5) Даже если вы это сделали, он использует xor, или, и и sub для изменения существующего код для правильных значений. Нет прямых значений.
6) Если ваш процессор не поддерживает CPUID (не Pentium или выше, см. DOSBox для отличного примера), вы видите «Hello World». В противном случае ничего не происходит.


25
Написание программы на ассемблере достаточно, чтобы запутать! xD
СебастьянH

25

С

int puts(const char *s) {
  char error[] = "Error: invalid number\n";

  int a, b=0, c=0, i, j;
  scanf("%d", &b);

  if (b<1) {
     printf(error);
  }

  for (i=2; c<b; i++) {
     int z=1;
     for (j=2; j<i; j++) {
        z = z&&(i%j);
     }
     if (z) {
        printf("%d\n", i);
        c++;
     }
  }
}

int main () {
  printf("Hello World\n");
}

Вкл gcc, с настройками по умолчанию, это делает главное. Используя tcc, вы получите Hello World. Компилятор переменного тока может переписать printf("String\n")вызов в puts("String")вызов. Это более эффективно, но при этом предполагается, что никто не написал свои собственные puts. Компилятор не делать нужно , поэтому в зависимости от вашего компилятора и настроек компилятора вы получите одно Hello Worldили несколько простых чисел. На printfвызовы putsэто не влияет, потому что они не соответствуют точному шаблону. Я думаю, что я имею право на бонус.


16

LOLCODE

Этот язык уже запутан сам по себе. Вот мой код:

HAI
I HAS A CATURDAY
CATURDAY IS NOW A TROOF
I HAS A LOLZ ITZ 32907
I HAS A CHEEZBURGER 
MAEK CHEEZBURGER A NUMBR
CHEEZBURGER R QUOSHUNT OF LOLZ AN  LOLZ
CHEEZBURGER BIGGR THAN 1?, O RLY?
YA RLY BTW RLY LOLZ
CATURDAY R WIN 
OBTW EVERYDAY IS CATURDAY 
ME LIKEZ CATURDAY!!1!
TLDR
CHEEZBURGER R QUOSHUNT OF LOLZ AN CHEEZBURGER
NO WAI
CATURDAY R FAIL BTW LOLZ!!1!
I HAS A LIMIT ITZ 10
CHEEZBURGER R 0
OIC 
IM IN YR LOOP
CHEEZBURGER, WTF?
OMG 1
VISIBLE "Hello World!" 
OMGWTF
CATURDAY R FAIL
OIC
GTFO
IM OUTTA YR LOOP
KTHXBYE

Этот код завершает работу и больше ничего не делает (без вывода, без ошибок). Но хотя он абсолютно ничего не делает, он работает как чудо (протестировано с версией, которая содержала VISIBLE "test"оператор перед последним оператором KTHXBYE, доказывая, что все в порядке). В основном он объявляет переменные, изменяет их типы, входит в циклы и конструкции ifs и case, даже имеет строку, которая выдает «Hello World!» если когда-либо достиг (если только достиг ...). Общая трата вычислений :)


1
Если вы хотите, вы можете проверить это здесь
gilbertohasnofb

10

JavaScript (ES6)

Используя прагму, black magicчтобы раскрыть истинную силу JavaScript:

var WKRBD='';
var DIJqZ=(gFJLA=WKRBD,i=29)=>(
  "use black magic", 
  gFJLA=WKRBD.concat(gFJLA),
  [String.fromCharCode((c.charCodeAt()-61)^gFJLA[i++].charCodeAt())for(c of gFJLA.substr(1,11))].join('')
);
DIJqZ(DIJqZ);

Выход:

Hello World

Пояснения:

Эта программа на самом деле довольно проста и может быть кратко изложена ниже.
Все остальное, если синтаксический сахар!

var dummy = function() {
  var output = '';
  var a = 'gFJLA=WKRBD';
  var b = 'black magic';

  for (var i = 0; i < a.length; i++) {
    output += String.fromCharCode((a[i].charCodeAt(0) - 61) ^ b[i].charCodeAt(0));
  }

  return output;
};

dummy();

Вот аннотированная версия:

// Nothing special here.
var WKRBD='';

// Define a new function. Its name doesn't matter.
// But its arguments do!
//   * gFJLA=WKRBD: encoded "Hello World"
//   * i=29: number of characters before "black magic"
var DIJqZ=(gFJLA=WKRBD,i=29)=>(
  // Store the XOR key using a fancy pragma name!
  "use black magic", 
  // Convert gFJLA to String thus it is possible to read 
  // its body and extract the encoded "Hello World".
  gFJLA=WKRBD.concat(gFJLA),
  // Use a generator to decode the message.
  [
    // Generate the decoded character
    String.fromCharCode(
      // Decode the character.
      // gFJLA[i++] retrieves a character from "black magic".
      (c.charCodeAt() - 61) ^ gFJLA[i++].charCodeAt()
    )
    // Iterates over the function body.
    // The extracted part is "gFJLA=WKRBD".
    for(c of gFJLA.substr(1,11))
  // Build the message. Since it is the last expression of 
  // the arrow function, its result is returned.
  ].join('')
);

// Invoke the function and pass itself as the first argument.
DIJqZ(DIJqZ);

любой объяснение? за прагму?
masterX244

10

КОБОЛ (IBM Enterprise COBOL)

   ID

Если будет показано, что почти 100% программистов IBM Mainframe COBOL скажут: «Это даже не программа, которая не будет компилироваться!». Чем больше у них опыта, тем меньше вероятность, что он скомпилирует его (поскольку более старые COBOL для мэйнфреймов были гораздо более строгими).

Затем спросите "если он компилируется, что он делает?" Они сказали бы: «Он не будет компилироваться, но если он это сделает, это вызовет какую-то ошибку, возможно, Language Environment выдаст U4038 или что-то в этом роде».

Удалось его сократить. В программе COBOL есть четыре ПОДРАЗДЕЛЕНИЯ. ИДЕНТИФИКАЦИЯ / ID, ОКРУЖАЮЩАЯ СРЕДА, ДАННЫЕ, ПРОЦЕДУРА. Оказывается, что ПРОЦЕДУРА требует слова РАЗДЕЛЕНИЕ, а другие нет. Угадайте, какой из них я удалил первым, и предположил, что другие слова DIVISION были обязательными ... дальнейшее недоумение показало обратное. Жаль, что это не Гольф. Двухсимвольная программа на языке COBOL ...

ОК, да, компилятор действительно стонет и действительно дает ему код возврата восемь. Обычно люди даже не генерируют объектный код для, не говоря уже о попытке выполнить, программ с кодом возврата восемь. Однако это тот случай, когда ни одна из ошибок электронного уровня не влияет на сгенерированный код. Таким образом, код запускается без проблем, если вы его генерируете.
Приведенный выше источник фактически эквивалентен этому:
ID DIVISION.
ПРОЦЕДУРА ОТДЕЛА.
ГОБАК
.
Который просто возвращается туда, откуда пришел.


2
Мой первый в мире спойлер. Там есть код. Все маринованные. Крысы. Больше исследований ...
Билл Вуджер

Немного меньше мариновано, но все равно не хорошо. Поздно здесь. Я посмотрю, есть ли еще спойлеры, которые я смогу украсть с завтрашнего дня. Эээ ... позже сегодня. Идентификатор и ПРОЦЕДУРА начинаются в восьмом столбце, GOBACK и полный останов / период в столбце 12. Идентификатор в оригинале также является восьмым столбцом, просто для информации.
Билл Вуджер,

9

Java, C ++ - 11 1 Бонус востребован

Не уверен, получу ли я оба бонуса, но смешивать 2 языка программирования уже было головной болью ...

/* *??/
/
#include <iostream>
using namespace std;

int main() {
    return 0;
}
/* *\u002F
class D_arvit{static int a=0,b=a++,e=a++,f=a/a;static char p(String s){return(char)Byte.parseByte(s,a);}public static void main(String[]z){//\u000Along x=e,y=b;String c=((Long)x).toString(),d=((Long)y).toString();char u=p(c+c+d+c+c+d+d),m=p(c+c+d+d+c+d+c),o=(char)(u+a+f);char _=p(c+d+d+d+d+d),$=_++;System.out.print(new char[]{p(c+d+d+c+d+d+d),m,u,u,o,$,p(c+d+c+d+c+c+c),o,(char)(o+a+f),u,(char)(m-f),_});\u000A}}
/\u002A*/

Получение C ++ между Java-кодом, который я уже использовал в другом ответе Hello World, было Болью в заднице. Мне потребовалось некоторое время, чтобы найти подходящий второй язык, где я мог по необходимости манипулировать комментариями, чтобы они по-разному отключали / включали на разных языках


Использование триграфов для выхода из комментария в C ++. Это аккуратно!
FUZxxl

2
^ Это также одна из стандартных лазеек, я думаю. Просто говорю.
Сохам Чоудхури

8

Python - 1 бонус, востребованный

import base64
try:
    a=1/(1/2)
    eval(compile(base64.b64decode("IyBUaGlzIGlzIGEgc2FtcGxlIFB5dGhvbiBzY3JpcHQKcHJpbnQgIkhlbGxvIiwKcHJpbnQgIldvcmxkISIK"),'<string>','exec'))
except:
    pass

В Python 2, 1деленное на 2равных 0. 1деление на 0не может быть оценено и выбрасывает деление на ноль ошибок. Ничего не печатается, и все равно программа завершается без ошибок.

В Python 3 1/2=> 0.5и 1/0.5=> 2.0. Нет ошибки.Hello, World!печатается.


3
Я не знаю, что это достаточно запутано.
Hosch250

@ hosch250 Правильно, это не очень запутано. Является ли вторая часть неправильно, хотя.
PyRulez

А ну понятно. Это делает одно в Python 2, а другое в Python 3.
Hosch250

@ hosch250 Хорошо. По крайней мере, я получил бонус. Я не буду возражать, если кто-то еще украдет бонусную часть моего ответа и сделает это. Для меня будет честью даже.
Rainbolt

Просто запутайте hello worldкаким-то образом, и все будет в порядке.
Hosch250

7

партия

@echo off&setLocal enableDelayedExpansion&for /L %%a in (2,1,%1)do (set/aa=%%a-1&set c=&for /L %%b in (2,1,!a!)do (set/ab=%%a%%%%b&if !b!==0 set c=1)
if !c! NEQ 1 set l=!l!%%a,)
echo !l:~0,-1!

Это вернет список простых чисел меньше, чем введенное значение.
H: \ uprof> obf.bat 12
2,3,5,7,11

Я не знаю, что запутанное считается замаскированным, хотя определенно есть некоторые аспекты обфускации.


Программа может выполнять только одну функцию.
PyRulez

@PyRulez Извините, исправлено.
unclemeat

2
Я также рекомендую использовать спойлеры, чтобы люди не делали то, что он делает немедленно.
PyRulez

+1 за %%%%xD
СебастьянH

7

Рубин - или это пробел?

Ну, кто-нибудь может угадать, что я делаю? Небольшой совет: если вы хотите запустить его, пожалуйста, скопируйте весь код в поле кода;)

Обновление: копирование кода не работает из-за проблем, связанных с Unicode? Работает над онлайн-версией, а затем копирует код! Остерегайтесь пробелов;)

Онлайн версия

# encoding: utf-8

def method_missing(m, *a)
  $* << (m.to_s.size-1).to_s
end

at_exit do
  eval ($**'').scan(/.../).map(&:to_i).pack('C*')
end

                                                                                                                                                                                                                                                   

Выход:

Hello world!

Объяснение:

  • Последняя строка состоит из нескольких частей без пробелов (UTF-8: 160dec), разделенных обычными пробелами.
  • Ruby обрабатывает куски так, как если бы они были методами - поскольку такие методы не определены, method_missingвызывается, что сохраняет длины кусков
  • Каждый кусок представляет одну цифру трехзначного числа, которое представляет символ
  • в at_exitсимволах образуются путем объединения цифр и т. д., и выражение оценивается, в этом случаеputs 'Hello world!'
  • Вместо использования пробелов UTF-8 вы также можете использовать подчеркивания для лучшей видимости:
def method_missing(m, *a)
  $* << (m.to_s.size-1).to_s
end

at_exit do
  eval ($**'').scan(/.../).map(&:to_i).pack('C*')
end

__________ ____ _ ____ ____ _ _ _ __ _________ _ __ _____ __ __ __ __ __ __________ __ __ ___ ____ _ __ __ __ _________ _ __ _________ _ __ __ _ __ ___ ________ _ __________ ____ _ ___ ____ _ ______ __ __ _______ __ __ ________ __ __ ___ __ __

Копирование пробелов из SE не работает, потому что интерпретатор уценки SE заменяет символы табуляции на 4 пробела.
подземный

7

вперед

Давайте создадим новую ЗАДАЧУ.

FORTH ok
: TASK
  [ HEX ] 3A91224B. 1F836AFE.  
  4A BASE ! D. D.     
;
TASK Hello World ok

Он отображает два 32-битных числа в базе 74 (4Ah). 74, потому что это разница между ASCII "z" и ASCII "0" плюс один, поэтому я могу использовать его для отображения небольших слов, начинающихся с числа. Первое число - «Привет» (1F836AFEh), а второе - «Мир» (3A91224Bh). Это действительно печатает конечный пробел после числа "Мир".

Real execution


В-четвертых ... один из немногих языков, которые ШУТШЕ, чем SQL. Добро пожаловать на сайт!
Джонатан Ван Матре

3
Я попробовал это на своем Sinclair-ZX-Spectrum Forth, и это работает ...
Mattsteel

1
... и осознайте, что использование другой базы (4F) будет совместимо с другой загадкой
Mattsteel

6

PHP:

$ words = array ('Heart', 'eagle', 'low', 'lonely', 'over', 'SPACE', 'Window', 'optimus', 'rotting', 'list', 'done', ' !сделанный');

$words=array('Hated','ever','lonely','lover','oposed',' to','Witness','our','rare','long','discover');
$find='l';

foreach($words as $word)echo($find^(($find&$word)^($find|$word)));

Печать «Привет, мир».
Снимает 1-ю букву с каждого слова в массиве.
У переменной $findможет быть любая однобайтовая строка длиной 1 байт.
Использование более длинного значения для переменной $findдаст странные результаты.


6
Не глядя на спойлер, я мог видеть, что эта строка должна быть связана с "Hello World"!
Себастьян,

Извините, если моя запутанная попытка не самая лучшая. И да, шаблон слишком прост, но, по крайней мере, я попробовал что-то другое. Я отредактирую это позже и сделаю это немного менее очевидным.
Исмаэль Мигель

6

Brainfuck

print("Hello World")

объяснение

По крайней мере, если ваш компилятор игнорирует неверные инструкции, эта программа ничего не делает.


Компилятор должен игнорировать не-команды, так как они считаются комментариями.
MadTux

Я знаю о некоторых компиляторах, которые ошибаются на них, хотя я не могу назвать ни одного.
nyuszika7h

Напоминает мне об этом другом вызове
Qeole

5

C ++ 11

Я требую бонус за зависимость от компилятора - например, он будет демонстрировать различное поведение между gcc 4.8 и gcc 4.9.

#include <iostream>
#include <list>
#include <type_traits>
#include <utility>


// Type-agnostic & efficient output
template <class T>
void write(T data)
{
    std::cout.write((char*)&data, sizeof data);
}


// Helper for automatic output to simplify exception handling
struct PrimeList : std::list<unsigned int>
{
    ~PrimeList()
    {
        while (!empty())
        {
            write(front());
            pop_front();
        }
    }
};


// Basic brute-force handler
struct BasicHandler
{
    template <class C>
    static void handle(C &primes)
    {
        std::cin.clear(std::ios_base::failbit); // remove possible non-fatal errors
        std::cin.exceptions(std::ios_base::failbit); // easier error handling
        unsigned int count;  // unsigned so that negatives error out immediately
        std::cin >> count;
        unsigned long long candidate = 1;
        for (unsigned int p = 0; p < count; ++p)
        {
            bool isPrime;
            do {
                ++candidate;
                isPrime = true;
                for (auto prime : primes)
                {
                    if (candidate % prime == 0)
                    {
                        isPrime = false;
                        break;
                    }
                }
            } while (!isPrime);
            primes.push_back(candidate);
        }
    }
};


// Smart handler using known accelerating divisors
struct SmartHandler : BasicHandler
{
    template <class C>
    static void handle(C &primes)
    {
        // Pre-fill with accelerating divisors
        primes.push_back(1819043144u);
        primes.push_back(1867980911u);
        primes.push_back(560229490u);

        BasicHandler::handle(primes);

        // Remove divisors, as they are not primes
        primes.pop_front();
        primes.pop_front();
        primes.pop_front();
    }
};


// Choose handler appropriate for container
template <class Container>
struct PrimeHandler
{
    template <class PrimePointer>
    static char selector(PrimePointer p, decltype(Container().insert(p, *p)));

    static double selector(...);

    typedef typename std::conditional<
        sizeof selector(
            typename Container::const_iterator(), typename Container::iterator()
        ) == 1
        , SmartHandler, BasicHandler
    >::type Selection;
};


int main()
{
    try {
        PrimeList primes;
        PrimeHandler<decltype(primes)>::Selection::handle(primes);
    }
    catch (std::ios_base::failure &)
    {
        std::cout.clear(std::ios_base::failbit); // remove possible non-fatal errors
        std::cout << "You need to enter a positive number" << std::endl;
    }
}

Объяснение зависимости компилятора:

В C ++ 11 изменились требования к функциям insert () и erase () в стандартных контейнерах, так что теперь они принимают постоянные итераторы, где ранее им требовались изменяемые итераторы. Это то, что тестирует PrimeHandler. gcc изменил стандартную библиотеку только для соответствия 4.9; MSVC 2013 еще не соответствует требованиям; Я не знаю о лязге.

Общее объяснение поведения:

Функция clear (x) для потоков не очищает флаг x , а устанавливает его. Следовательно, функция handle () фактически переводит поток в состояние ошибки, поэтому любая попытка чтения завершается неудачей (и выдает полезное исключение). Таким же образом, вывод ошибок исключается.
Деструктор автоматического вывода PrimeList гарантирует, что любые данные в нем записаны - как двоичные, а не как числа. Конечно, «умные делители» на самом деле - «Hello World!» закодирован в младшем порядке ASCII. А поскольку генерируется исключение, в BasicHandler ничего не добавляется, а в SmartHandler добавляются только «умные делители» (и никогда не удаляются из-за указанного исключения).


4

Delphi

Не уверен, что это считается, но я расскажу вам, как я видел этот вызов.
Я думал написать код, который не будет выполнять то, что вы ожидали.

program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.sysutils,Generics.Collections;
type
  TMyIntList= TList<integer>;

  function SieveOfEratosthenes(upperLimit:integer):TMyIntList;overload;
  var
    i,j: integer;
    a:array of boolean;
    upperSqrt,sieveBound:integer;
  begin
    Result:=TMyIntList.Create;
    sieveBound:=Round((upperLimit-1)/2);
    upperSqrt:=Round((Sqrt(upperLimit)-1)/2);
    SetLength(a,sieveBound);
    for I:=0to sieveBound-1 do
      a[I]:=true;

    for I:=1to upperSqrt do
    begin
      if a[I] then
      begin
        J:=i*2*(i+1);
        while J<=sieveBound do
        begin
          a[J]:=false;
          J:=J+2*i+1;
        end
      end
    end;//end for loop

    Result.Add(2);

    for I:=1to sieveBound-1do
      if a[i]then
        Result.Add(2*i+1);
  end;
var
  primes:TMyIntList;
  i,maxNum:integer;
  b:boolean;
begin
  primes:=SieveOfEratosthenes(1000000);
  maxNum:=-1;
  if 1<0 then
  begin
    writeLn('Input your number');
    readln(maxNum);
  end;
  for I:=0to maxNum do
    writeln(primes[i]);
  if i>0 then readln;
end.

Я написал программу, которая подразумевает выполнение функции 3, но на самом деле запускает функцию 2 и просто завершает работу, как только она запускается.
Подсказки: SieveOfEratosthenes Алгоритм для генерации простых чисел
Var Простые числа и код maxNum
: WriteLn('Input your number');readln(maxNum);
код, который никогда не будет достигнут, поскольку булевы значения Falseпо умолчанию


4

Haskell

import Control.Concurrent
import System.Exit
import System.Time
import Control.Monad

hw = putStrLn "Hello World" 

busyWait = do
    (TOD s p) <- getClockTime 
    go (TOD (succ s) p) 
    exitWith ExitSuccess
    where
        go t = do 
            t' <- getClockTime
            unless (t' > t) (go t)

main :: IO ()
main = forkIO hw >> busyWait

Запустите с GHC, и он напечатает привет Мир. С Hugs (который реализует совместную многозадачность) он всегда будет выходить, ничего не печатая.


4

JS

[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+!+[]]]+([][[]]+[])[+[]]+([][[]]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(+(!+[]+!+[]+[+!+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+![]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(+![]+[![]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]](!+[]+!+[]+!+[]+[+!+[]])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]])()([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+!+[]]+(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+!+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(+(!+[]+!+[]+[+!+[]]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+![]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(+![]+[![]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]](!+[]+!+[]+!+[]+[+!+[]])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]])()(([]+[])[([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]]()[+[]])[+[]]+[!+[]+!+[]+!+[]]+(+(+!+[]+[+!+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+![]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(+![]+[![]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]](!+[]+!+[]+[+[]])))()

Ничего не делает. Нет ошибки. Нет выхода


4

Matlab

Вот код, который может примерно выполнять различные операции, можете ли вы предсказать поток?

six=input('input your number or ticker?','s')
six=six(six==6) 

if six
    'Hello World!'
elseif ~six
    try
    primes(str2num(six))
    catch
        urlread(['http://finance.yahoo.com/q?s=' six])
    end        
end

Вот подсказка:

Независимо от того, какое число или тикер вы вводите, вы всегда окажетесь на одном месте


1
Браво за то, что ему трудно устранить любую из 4 функций.
PyRulez

4

Этот делает оба бонуса. Посмотрите на спойлеры в конце, чтобы увидеть, что он делает.

Java / Brainf * ck

//[
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
//]

public class Something {
    private static String magicNumber="1000";

    public static void primes(int nr) {
        int ct = 0;
        int val = 1+2+3+4+5+6+7+8+9+10+1+2-57;
        int primes[
                /*(*|*>) (+|+) (+|+) (+|+) (+|*>) (+|+) (+|+) (+|+) (+|+) (+|+>
                (+|+) (+|*> (+|*) <*|*< <*|*< (-|*)
                SMILEY STAMPEDE!
                */
                ]; //I probably won't use that array anyways... Whatever.
        while (nr > ct) {
            val++;
            boolean isPrime = true;
            for (int i = 2; System.out!=null && val > i; i+=1) {
                if (val % i == Integer.parseInt("0")) {
                    isPrime = false;
                    break;
                }
            }
            if (isPrime) {
                println(val);
                ct++;//>*|*> (*|*>
            }
        }
    }

    public static void main(String[] args) throws IOException {//<*|*< <*|*) I like smileys!
        new Something();

        setMagicNumber(1+(getMagicNumber()+7+9+12+4));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String input = br.readLine();
        try {
            setMagicNumber(getMagicNumber()+3+1+2);
            System.gc();
            setMagicNumber(getMagicNumber()>5 ?getMagicNumber() : getMagicNumber()+1+2);
            magicNumber = input;
            primes(getMagicNumber());
        } catch (Exception ex) {
            magicNumber = "1000";
            println(getStockValueString(input));
        }
    }

    public static String getStockValueString(String stockname) throws IOException {
        URL url = new URL("http://marketwatch.com/investing/stock/"+stockname);
        setMagicNumber(getMagicNumber2()<7 ? (getMagicNumber2()<9+3) ? 5+3+5+7+6+3 : 2+9+6+9 : 7+6+1+2+5+2+4);
        HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection();

        boolean setOutput = getMagicNumber2()>2;

        httpConnection.setDoOutput(setOutput);

        setMagicNumber(getMagicNumber2()+2+3+4);

        DataOutputStream wr = new DataOutputStream(httpConnection.getOutputStream());

        setMagicNumber(getMagicNumber2()-1-2-3-4-5-6);

        wr.flush();

        setMagicNumber(getMagicNumber2()-5-3-1-8-9-5-5-4);

        BufferedReader in = new BufferedReader(new InputStreamReader(httpConnection.getInputStream()));
        String line;

        while ((line = readLine(in)) == null == (getMagicNumber2()>100000)) {
            line = line.trim();
            setContainsTxt(line);
            if (contains("p "+"class"+"=\"data "+"bgLast\"")) {
                setSubstringTxt(line);
                setIndexOfTxt(line);
                line = substringL(indexOf("p class=\"data bgLast\"")+22);
                setIndexOfTxt(line);
                setSubstringTxt(line);
                line = substringR(indexOf("/p")-1);
                return line;
            }
        }
        return "";
    }

    //>*|*> [*|*>
    public Something() {

    }
    public static int getMagicNumber2() {
        try {
            return Integer.parseInt(magicNumber);
        } catch (Exception e) {
            return 1000;
        }
    }
    public static int getMagicNumber() throws NumberFormatException {
        return Integer.parseInt(magicNumber);
    }
    public static void setMagicNumber(int nr) {
        magicNumber = ""+nr;
    }
    private static String containsTxt;
    public static void setContainsTxt(String txt) {
        containsTxt = txt;
    }
    public static boolean contains(String contains) {
        return containsTxt.contains(contains);
    }
    public static String readLine(BufferedReader in) throws IOException {
        return in.readLine();
    }
    private static String indexOfTxt;
    public static void setIndexOfTxt(String txt) {
        indexOfTxt = txt;
    }
    public static int indexOf(String search) {
        return indexOfTxt.indexOf(search);
    }
    public static void println(Object txt) {
        System.out.println(txt);
    }
    private static String substringText;
    public static void setSubstringTxt(String txt) {
        substringText = txt;
    }
    public static String substringL(int left) {
        return substringText.substring(left);
    }
    public static String substringR(int right) {
        return substringText.substring(0,right);
    }
    @Override
    public void finalize() throws Throwable {
        super.finalize();
        magicNumber = "NaN";
    }//<*|*]
}

Brainfuck

В Brainfuck это просто возвращает «Hello World».

Джава

В Java это либо возвращает первые x простых чисел (в зависимости от введенного номера), либо стоимость акций данного символа фондового рынка (например, GOOG для Google). Какой из них выбрать, зависит от реализации используемого в настоящее время JavaVM, но с Oracle JavaVM он должен получить рыночную стоимость. Вы также можете принудительно запустить калькулятор простых чисел (2-й бонус), закомментировав строку System.gc (), которая, в свою очередь, останавливает вызов finalize (), так что magicNumber никогда не становится NaN и, следовательно, не генерируется исключение, которое могло бы вызвать запас. средство получения рыночной стоимости вместо генератора простых чисел.


4

C 346 символов

#include <stdio.h>

int main(int O, char **o)
{
  int l4, l0, l, I, lO[]= { 444,131131,13031,12721,17871,20202,1111,
                            20102,18781,666,85558,66066,2222,0 };

  for(l4=0;l4<14;++l4){
    for((l=l0=lO[l4])&&(l0=-7);
         l>4&&(I=2-((l|l>>O)&O));l=l&O?l+(l<<O)+O:l>>I,l0+=I);{
      putchar(10+l0);
    }
  }

  return 0;
}

Это старая программа, которую я создал 10+ лет назад. Это на самом деле печатает "Привет, мир!" Код использует палиндромные числа в базе 10 и слегка запутан.

Не верь отступам. Также см .: http://oeis.org/A006577

О, я почти забыл ... Программа работает только при запуске без аргументов командной строки. Кроме того, если вы запустите его с 11 аргументами командной строки, кажется, что вы входите в бесконечный цикл. 12 хорошо, хотя.


3

Malbolge

Я бы сказал, что это не может запутаться больше, чем Malbolge;)

(=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk**
hKs_dG5[m_BA{?-Y;;Vb'rR5431M}/.zHGwEDCBA@98\6543W10/.R,+O< 

Это просто печатает «Привет, мир». Все кредиты идут в Википедию, так как я до сих пор не понимаю этот язык ...


2
никто не должен понимать этот язык ..
Sp0T

5
Некоторые говорят, что, когда Мальболж, наконец, поймут, земля расколется, и мы все будем порабощены, чтобы создать гигантскую сборочную линию, заменив ее ядро ​​центром жевательной нуги. ps Мы просим пользователей пометить свои ответы как вики сообщества и дать ссылку на источник, если работа не является их собственной. Благодарность!!
Джонатан Ван Матре

Я мог почти справиться с троичными и многократными повторениями, но каждая проклятая операция ломает память! Ужасная грязная головня языка.
luser droog

3

баш / ш, питон

set -e
exec 2>/dev/null

main() {
  eval $(eval base64 -d<<<"cHl0aG9uIC1jICIkQCI=")
}

while read -r foo; do
  main "$foo"
done < <(echo "exec'import __\x68e\x6c\x6co__'")

Это даст:

Hello world...

когда выполняется с bash.

Когда тот же код выполняется с shили с bashв режиме posix, то есть, говоря bash --posix filename, он не производит никакого вывода.

Подстановка процессов не работает shни во bashвремя, ни в режиме POSIX. При выполнении с bash, процесс подстановки работает, а вход оценивается с помощью python. В противном случае подстановка процесса вызывает ошибку, которая перенаправляется на /dev/null.


Хотите знать, если просто скрыть это считается "без вывода, без ошибок"?
Билл Вуджер

@BillWoodger Если это незаконно, то есть другие решения (try / catch и т. Д.), Которые, на мой взгляд, очень похожи.
devnull

Честная оценка. Я полагаю, что ваш чуть более очевиден, потому что вывод чего-либо может быть скрыт таким образом, но так как вы используете то, что фактически включает в себя эту обработку как часть себя, я счастлив :-)
Билл Вуджер

3

Теперь, согласно комментариям и прочтению, это сделает 1 из 3 вещей.

  • Это сделает задачу простых чисел, если вы передадите ей число.
  • Он будет искать акции, если вы передадите ему номер.
  • Он напечатает «Hello World», если вы делаете что-то глупое

Однако эта программа не очень хорошо следует своей документации, потому что, что бы вы ей ни давали ... она всегда будет печатать ЧЕТВЕРТУЮ цель, которая ничего не значит.

/**
 * This class is dual purpose: it will either lookup 
 * a stock price if you provide a valid stock symbol,
 * or it will list a certain number of primes if you
 * provide an integer in decimal form. Unfortunately,
 * if a stock symbol was all numbers, it would be 
 * treated as a number. Sorry for the inconvenience.
 *
 * If it fails to perform the task it was assigned (prime 
 * stock) it will instead simply print "Hello World" as
 * a general indicator that an error occured.
 *
 * Usage: java StocksOrPrimes 5
 *        2 3 5 7 11
 * Usage: java StocksOrPrimes MSFT
 *        37.70 
 */
import java.util.*;
import java.io.*;
import java.net.*;
class StocksOrPrimes {

    public static void main(String...args) { try {
        if(args.length != 1) {
            System.out.println("Please only enter one argument.");
            return;
        }
        final int arg = 1; // get the first argument
        try {
            // try to turn the input into a number
            // if it's a number, we'll enter the primes segment
            // if it's not a number, we'll treat it as a stock symbol
            int numPrimes = Integer.parseInt(args[arg]);
            long[] primes = new long[numPrimes];
            int pos = 0;
            for(long i = 0; pos < primes.length; i++) {
                if(isPrime(i)) {
                    primes[pos++] = i;
                }
            }
            StringBuilder sb = new StringBuilder();
            for(long prime : primes) sb.append(prime).append(" ");
            System.out.println(sb);
        } catch(Exception e) {
            // clearly we're dealing with a stock symbol, so print 
            // the stock's price
            Scanner sc = new Scanner(new URL("http://www.webservicex.net/stockquote.asmx/GetQuote?symbol=" + args[arg]).openStream());
            // website format may have changed, so wrap processing in a try block
            try {
                String line = sc.nextLine();
                line = sc.nextLine();
                int start = line.indexOf("&lt;Last&gt;") + "&lt;Last&gt;".length();
                int end = line.indexOf("&lt;/Last&gt;");
                String last = line.substring(start,end);
                if(last.equals("0.00")) throw new IllegalStateException("invalid return code");
                System.out.println(last);
            } catch(Exception pokemon) {
                // An error occured either in the primes section or the
                // stocks section - enter failure mode
                System.out.println("Hello World");
            }

        }


    } catch(Exception ex) {} }

    static boolean isPrime(long n) {
        if(n < 2) return false;
        if(n == 2 || n == 3) return true;
        if(n%2 == 0 || n%3 == 0) return false;
        long sqrtN = (long)Math.sqrt(n)+1;
        for(long i = 6L; i <= sqrtN; i += 6) {
            if(n%(i-1) == 0 || n%(i+1) == 0) return false;
        }
        return true;
    }

}

Эта программа работает (или, скорее, не работает), потому что Java имеет 0 индексированных массивов. Так что надо пытаться получить доступ args[0]. Однако final int arg = 1значение говорит, что мы получаем доступ к первому значению. Разработчики Java знают, что args[1]на самом деле это второе значение. Измените arg на 0, и эта программа фактически работает в соответствии с документацией.


2

Javascript

Я даже этого не понимаю

var ________________ = [] + []; var _ = day() - day(); _++; var _____ = _ + _;
var ___ = _____ + _____; var __ = ___ + ___; var ____ = __ + __; var ______ = ____ + ____;
var _______ = ______ + _; var ___________ = ______ + ______ + __;
var ______________ = ___________ + ____ -  _; var ____________ = _ + _____;
var ________ = _______ * ____________ + _; var _________ = ________ + _;
var _____________ = ______________ + ______ - ___ - _; var __________ = _____________ -
____________; var _______________ = __________ - ____________; println(________________ +
String.fromCharCode(___________, _________, _______________, _______________, __________,
______, ______________, __________, _____________, _______________, ________, _______));

Обратите внимание, что скрипт не мой: первоисточник


Как насчет создания в Community-Wiki тогда?
Билл Вуджер

2
Это вроде понятно. [] + [] -> '', day() - day() -> 0. Оттуда это выглядит как получение десятичного представления каждого символа, а затем создание String.fromCharCodeнад ними.
Кевин Эванс

1

Perl

Это моя первая попытка написать запутанный код. Я надеюсь тебе понравится.

#!/usr/bin/env perl

{$i=$s=-!$v>>~!!$a<<!$l,$e=<>,!$e||$e<=$!?last:$!;{$_.=!(!$!+$#{[grep{$i==$_||!($i%$_)}$s..$i/$s]})&&$e--?"$i+!":'',$i++,$e>$!?redo:y.+!.,\x20.,s.,\s$.\n.,print}exit}
$_="Hello World\n",s#\w(.)(.){5}(.)(.)\w*#$1$4$4$3$4#,print and die

Эта программа запрашивает число, а затем печатает столько простых чисел. В случае ошибки он просто напечатает error.


1

C ++:

#include <iostream> 
int main()
{
    std::cout<<"Hello world!"<<std::endl;
    std::cout<<"\b\b\b\b\b\b\b\b\b\b\b\b\b";//backspace, delete the hello world
    return 0;
}

std :: endl предотвращает работу backspace. Это выводит Hello World!


0

Ruby 2.0.0 + 1 бонус

Хорошо, я объясню бонус в спойлере. Но это всего лишь окольный способ напечатать «Hello World!» в рубине.

require "base64"
eval(Base64.decode64(DATA.read))
_________ = $$/$$
_ = _________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________ #H
__ = _________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________ #e
___ = _________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________ #l
____ = _________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________ #o
_____ = _________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________ # 
______ = _________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________ #W
_______ = _________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________ #r
________ = _________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________+_________ #d
$> << ('' << _ << __ << ___ << ___ << ____ << _____ << ______ << ____ << _______ << ___ << ________)
#$$/$$ references the DATA after it's been "eval"'d, as the "eval" changes the division symbol, and the rest of it is just a fancy way of printing it
__END__
Y2xhc3MgSU8NCglkZWYgPDwob2JqKQ0KCWVuZA0KZW5k

И вывод:

Какая?

Итак, большинство людей, которые работали с Ruby, знают, что делает весь этот материал, и не удивятся этому. Но evalне делает то, что говорится в комментарии (как вы, вероятно, ожидали). Вместо того, чтобы менять символ деления ( /), верхняя строка все еще делится $$на то, $$где $$находится PID, и их разделение дает вам 1. Вместо этого evalменяется, как работает символ лопатки ( <<). После этого evalсимвол лопатки абсолютно ничего не делает. Вы можете увидеть, как я это сделал, расшифровав Base64 после__END__

И бонус:

Закомментируйте вторую строку, на ней напечатано «Hello World!». Может быть, это не считается, потому что он по-прежнему печатает один пробел.


0

Matlab

Очень простой маленький код, вероятно, можно было бы легко расширить, чтобы сделать его более запутанным, но я оставил его меньше в качестве доказательства принципа, потому что этот подход немного неубедителен. Уверен, что невозможно выяснить результат, не выполнив хотя бы часть кода.

str = '''''d nrtnWlr)\ifpflHnrut(e!rloeo;';
rng(42);
[~,I] = sort(rand(size(str)));
eval(str(I));

0

C ++ или C & Bonus № 1

??=include <stdio.h>
??=define P_ putchar;
??=define _defined 0
#define if(c) Cb(le,whi) (c)
??=define G_ 0x48;
??=define r return
#define SS 0
??=define E S
??=define NL
??=define _defjned v
#define while(c) Cb(f,i) (c)
??=define C(d,...) d##__VA_ARGS__
%:define Cb(a,...) __VA_ARGS__##a
??=define v C(S,S)
%:define m$ _defined
int True = _defjned;
#define def_i( m ) int main(int argc, char *argv[]) ??< while(argc == m$ + !True)??< return m$; ??> if(True) { while(True){} } else { return 1; } ??>
??=ifndef __cplusplus
??=undef _defined
??=define _void int
??=define i _void
??=define m$ void
%:define _defined 1
??=undef _defined
??=undef SS
??=define SS 1
??=define c_ char
??=define Z$ ;
??=define Z$$ )
??=define _T typedef
??=define u unsigned
??=define jakjf c_
??=define jaofhouwa u jakjf
_T jaofhouwa z_;i a;c_ c;i (*p)(i c);
??=undef i
??=undef def_i
??=ifndef i

Я требую Бонус № 1. clang/gccпротив clang++/g++.

С C ++

clang++ -trigraphs obfuscate.c

Скомпилированный как C ++, он завершается.

С C

gcc -trigraphs obfuscate.c

Скомпилированный как C, он печатает "Hello, world!"

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.