Wyzwanie zaciemnienia [zamknięte]


24

Masz napisać program, który wykonuje jedną z poniższych czynności.

  1. Wyświetla tylko „Hello World”, nic więcej
  2. Przerywa i nic więcej (bez danych wyjściowych, bez błędów).
  3. Pobiera jeden wiersz danych wejściowych, analizuje go jako liczbę całkowitą, wyświetla pierwszy z wielu liczb pierwszych (lub daje niezły błąd, jeśli podano dane wejściowe, których nie można przeanalizować jako liczbę całkowitą, lub jest mniejsze niż 0.)
  4. Biorąc pod uwagę jeden wiersz danych wejściowych, analizuje, że ma symbol akcji i sprawdza w Internecie bieżącą wartość akcji i jej zmianę.

Złap, nie powinno być oczywiste, jaką funkcję pełni. Mianowicie, dla kogoś, kto patrzy na twój kod, nie powinno być oczywiste, jaką funkcję będzie pełnił. Może także wykonywać i być w stanie wykonywać tylko jedną funkcję (nie może wybierać i wybierać). O tym, jak dobry jest program, decyduje to, jak niepewny jest ktoś, kto na niego patrzy, jaka jest jego funkcja, a także jak dobrze jest znany osoba jest z tym językiem.

BONUS: Jeśli zrobisz to w sprytny sposób, chociaż dla dowolnego kompilatora / intruza i platformy program będzie wykonywał tę samą funkcję, dla różnych kompilatorów / interpretatorów lub platform, będzie wykonywać inną funkcję. Ta premia może zostać zebrana tylko wtedy, gdy zostanie wykonana sprytnie.

BONUS: Jeśli twój program zawiera tylko kod, który jest zdolny do jednej funkcji (nic nie zapisuj, ponieważ jest w stanie to zrobić pusty kod) i nie jest możliwe dokonanie prostej modyfikacji niezwiązanej z funkcją, aby umożliwić jej wykonanie innej funkcji. Na przykład: jeśli tak

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

Nie będzie liczony jako zaciemnionyBool może być ustawiony jako Prawda lub Fałsz, aby wydrukować odpowiednio „Hello World” lub nic nie robić.

BONUS INFINITY: Jeśli zrealizujesz oba bonusy jednocześnie, jesteś magiczny.

BONUS NEGATYWNY: Używanie bibliotek o określonych zdolnościach do wykonywania funkcji.

Głosujący, weź pod uwagę bonusy, ponieważ wygrywa program z największą liczbą głosów!

Uwaga: Jeśli powiesz, co robi Twój program, pamiętaj o użyciu składni spoilera!


2
Szczerze mówiąc, nie rozumiem większości pytań. Idę dalej i powiem, że rozumiem tylko 4 punkty.
Ismael Miguel

Stwórz program, który robi jedną z 4 rzeczy, ale nikt nie wie co.
PyRulez

25
A co z bonusami? Poważnie, nawet pytanie jest zaciemnione.
Ismael Miguel

4
Ponieważ jest to konkurs popularności, po co jest premia?
Ismael Miguel

1
@MukulKumar - jak w rzeczywistości mój miał sens?
TheDoctor

Odpowiedzi:


43

Whitespace / Brainfuck / Python

'''zaczynać''''''''''''  
main (args) {   	  	   
	parseArgs = args.Find ('^ ++++++++ ^ [<++++ [<++ <+++ <+++ <+ >>>> az] <+ <+ <AZ [ >]> 0-9] <<. <---. * $ ');
    for (int i = 0; Range (GetLength (parseArgs)); i ++) {validateArg (parseArgs (i));}  	 	
	//imię
    string stockName = "";		 		  
	//pętla
    for (int i = 0; Range (GetLength (parseArgs)); i ++) {		 		  
	//uprawomocnić
     	if (matchFound = Znajdź ('a + z + A + .Z.0 + 9 + _ +. << * $') {	 				
	//uznany
     	parseArgs (i) .Split ('> -.>. +');}     
	
     	for (int j = 0; Range (GetLength (parseArgs (i))); j ++) {	 			
	//pobieranie
    data = ConvertTo.String (eval („curl -get http://some-stock-ticker-source-url-here.com”));	 				
	wydrukować;
    wydrukować dane;			  	 
	
    // separator linii		 		  
	
    drukuj „--------.”;		  	  
	}}
}  


''koniec'''''''''''''''

Wikipedia: Whitespace (język programowania)
Online interpreter białych znaków do testowania odpowiedzi
Online Brainfuck interpreter do testowania odpowiedzi

Wyjście (Whitespace / Brainfuck):

Witaj świecie
Ouput (Python):
Nic, ale działa poprawnie.


2
To jest naprawdę fajne! Myślę, że powinieneś zaktualizować opis. Czy oczywisty kod nie jest trzecim programem, który też coś robi? Również jeśli mógłbyś zmienić jeden z „pieprzenia mózgów” lub „białych znaków”, aby wykonać jedną z innych funkcji, dałbym ci premię INFINITY!
SebastianH

1
W jakim języku jest program udający?
durron597

1
@ durron597 To dziwna hybryda C # i Python. Miałem to wszystko zrobić w C #, ale trudno było sprawić, by składnia działała przez cały czas.
gajeNL

@SebastianH To udawany program maskujący jego rzeczywistą funkcję.
gajeNL

Funkcja Pythona jest zbyt przejrzysta. Gdy zobaczysz pierwsze 3 znaki, musisz po prostu zeskanować resztę kodu w celu znalezienia końca literału łańcucha.
użytkownik2357112 obsługuje Monikę

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゚])(゚Θ゚))('_');

Na alerty „Hello World”
odpowiedziano na /codegolf//a/3946/803
Ponieważ nie wymyśliłem tej odpowiedzi, dzięki czemu jest to wiki społeczności


28
Czy jesteś całkowicie pewien, że to nie jest APL?
mniip

2
@mniip Oh Yeah !! to jest JS. Demo jsfiddle.net/7mqL8
Clyde Lobo

11
Wszędzie widzę buźki ..
Thorkil Holm-Jacobsen

1
To najlepsze wykorzystanie Unicode w JavaScript, jakie kiedykolwiek widziałem!
Cole Johnson

4
+1 dla buźkę: (o^_^o).
Amal Murali

31

Zestaw MS-DOS x86

Ponieważ nie jest już zaciemniony, gdy jest w asemblerze, zróbmy jeszcze gorzej! To POWINIEN działać z dowolnym asemblerem, który może łączyć się z plikiem COM, ale testowałem tylko z TASM dla DOS przy użyciu 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

Jest to kod samodopasowujący, który robi kilka rzeczy:
1) Zmienia pierwsze 12 bajtów na „Hello World [znak dolara]”
2) Zmienia pozornie nie na miejscu „dec cl” i „movsx dx cl” na „nop ”,„ mov ah, 9 ”,„ int 021h ”
3) Wszystko jest ze sobą bardzo rozproszone. Robi to również test flag, aby sprawdzić, czy twój procesor obsługuje CPUID
4) Wartości szesnastkowe przekonwertowane na dziesiętne, więc nie masz pojęcia ...
5) Nawet jeśli tak, używa xor lub lub i do modyfikowania istniejącego kod do poprawnych wartości. Brak bezpośrednich wartości.
6) Jeśli twój procesor nie obsługuje CPUID (nie Pentium lub wyżej, świetny przykład zobacz DOSBox), zobaczysz „Hello World”. W przeciwnym razie nic się nie stanie.


25
Pisanie programu w asemblerze wystarczy zaciemnić! xD
SebastianH

25

do

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");
}

Włączone gcc, przy ustawieniach domyślnych, to jest najważniejsze. Za pomocą tccdostajesz Hello World. Kompilator prądu zmiennego może przepisać printf("String\n")połączenie na puts("String")połączenie. Jest to bardziej wydajne, ale zakłada, że ​​nikt nie napisał własnego puts. Kompilator nie musi tego robić, więc w zależności od kompilatora i ustawień kompilatora otrzymasz jeden Hello Worldlub kilka liczb pierwszych. Nie ma to wpływu na printfwywołania w puts, ponieważ nie pasują one dokładnie do szablonu. Myślę, że kwalifikuję się do premii.


16

LOLKOD

Ten język jest już zaciemniony. Oto mój kod:

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

Ten kod kończy pracę i nie robi nic więcej (bez danych wyjściowych, bez błędów). Ale chociaż nie robi absolutnie nic, działa jak urok (testowany z wersją zawierającą VISIBLE "test"instrukcję przed ostatnią instrukcją KTHXBYE, co dowodzi, że wszystko jest w porządku). Zasadniczo deklaruje zmienne, zmienia ich typy, wchodzi w pętle i konstrukcje ifs i case, ma nawet wiersz, który wypisałby „Hello World!” jeśli kiedykolwiek dotarł (jeśli tylko dotarł ...). Całkowity marnotrawstwo obliczeń :)


1
Jeśli chcesz, możesz to przetestować tutaj
gilbertohasnofb

10

JavaScript (ES6)

Używanie pragmy black magicdo ujawnienia prawdziwej mocy 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);

Wydajność:

Hello World

Objaśnienia:

Ten program jest w rzeczywistości dość prosty i można go streścić poniżej.
Wszystko inne, jeśli cukier syntaktyczny!

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();

Oto wersja z adnotacjami:

// 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);

jakieś wyjaśnienie? dla pragmy?
masterX244

10

COBOL (IBM Enterprise COBOL)

   ID

Jeśli zostanie to pokazane, bardzo blisko 100% programistów COBOL IBM Mainframe powiedziałoby „to nawet nie jest program, który się nie skompiluje!”. Im więcej mają doświadczenia, tym mniej prawdopodobne jest, że pomyślą, że się skompiluje (ponieważ starsze wersje COBOL-a Mainframe były znacznie bardziej rygorystyczne).

Następnie zapytaj „jeśli się kompiluje, co robi?” Mówiliby: „nie skompiluje się, ale gdyby tak się stało, dałoby to jakiś błąd, prawdopodobnie środowisko językowe dałoby U4038 lub coś w tym rodzaju”.

Udało się go skrócić. Istnieją cztery DYWIZJE w programie COBOL. IDENTYFIKACJA / ID, ŚRODOWISKO, DANE, PROCEDURA. Okazuje się, że PROCEDURA wymaga słowa PODZIAŁ, a inni nie. Zgadnij, który z nich usunąłem jako pierwszy i założyłem, że inne słowa PODZIAŁ były obowiązkowe ... dalsze zagadki ujawniły inaczej. Szkoda, że ​​to nie Golf. Dwuznakowy program COBOL ...

OK, tak, kompilator jęczy i rzeczywiście daje mu kod powrotu o wartości ośmiu. Zwykle ludzie nawet nie generują kodu obiektowego, nie mówiąc już o próbie uruchomienia programów z kodem powrotu wynoszącym osiem. Jest to jednak przypadek, w którym żaden błąd poziomu E nie wpływa na wygenerowany kod. Więc kod działa bez problemu, jeśli go wygenerujesz.
Powyższe źródło jest faktycznie odpowiednikiem tego:
ID DIVISION.
DZIAŁ PROCEDURY.
GOBACK
.
Który po prostu wraca do miejsca, skąd przyszedł.


2
Mój pierwszy spoiler. Tam jest kod. Wszystkie marynowane. Szczury Więcej badań ...
Bill Woodger

Nieco mniej marynowane, ale wciąż nie dobre. Późno tutaj Zobaczę, czy jest więcej spoilerów, które mogę ukraść od jutra. Err ... później dzisiaj. Identyfikator i PROCEDURA rozpoczynają się w kolumnie ósmej, GOBACK i kropka / kropka w kolumnie 12. Identyfikator w oryginale to także kolumna ósma, tylko dla informacji.
Bill Woodger

9

Java, C ++ - 11 1 Żądany bonus

Nie jestem pewien, czy dostałem oba bonusy, ale przeszkadzało mi już połączenie dwóch języków programowania ...

/* *??/
/
#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*/

Uzyskiwanie C ++ między kodem Java, którego już użyłem w innej odpowiedzi Hello World, było bólem w dupie. Zajęło mi chwilę znalezienie odpowiedniego drugiego języka, w którym mogłem żonglować komentarzami w razie potrzeby, aby wyłączały / włączały się inaczej w różnych językach


Używanie trigrafów do zamykania komentarza w C ++. To jest miłe!
FUZxxl,

2
^ Myślę, że to także jedna ze standardowych luk. Tylko mówię.
Soham Chowdhury,

8

Python - 1 przyznany bonus

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

W Pythonie 2 1podzielone przez 2równe 0. 1podzielone przez 0nie może być ocenione i powoduje błąd dzielenia przez zero. Nic nie jest drukowane, a mimo to program kończy się bezbłędnie.

W Pythonie 3, 1/2=> 0.5i 1/0.5=> 2.0. Żaden błąd. Hello, World!jest drukowane.


3
Nie wiem, czy to jest wystarczająco zaciemnione.
Hosch250

@ hosch250 Ma rację, to nie jest bardzo zaciemnione. Czy druga część jest jednak błędna.
PyRulez

Rozumiem. Robi jedną w Pythonie 2, a drugą w Pythonie 3.
Hosch250

@ hosch250 No cóż. Przynajmniej dostałem bonus. Nie będę miał nic przeciwko, jeśli ktoś inny ukradnie bonusową część mojej odpowiedzi i ją uformuje. Byłbym nawet zaszczycony.
Rainbolt

Po prostu zaciemnij hello world w jakiś sposób, a wszystko będzie dobrze.
Hosch250

7

Partia

@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!

Zwróci to listę liczb pierwszych mniejszą niż wprowadzona wartość.
H: \ uprof> obf. nietoperz 12
2,3,5,7,11

Nie wiem, czy zawiłe liczy się jako zaciemnienie, chociaż z pewnością istnieją pewne aspekty zaciemnienia.


Program może wykonać tylko jedną funkcję.
PyRulez

@PyRulez Przepraszamy, naprawiono.
niepomyślnie

2
Polecam również używanie spoilerów, aby ludzie nie robili tego, co robi natychmiast.
PyRulez

+1 za %%%%xD
SebastianH

7

Ruby - czy jest to biały znak?

Czy ktoś może zgadnąć, co robię? Mała wskazówka: jeśli chcesz go uruchomić, skopiuj cały kod w polu kodu;)

Aktualizacja: Kopiowanie kodu nie działa z powodu problemów związanych z Unicode? Wydaje się, że rozwidlenie wersji online, a następnie skopiowanie kodu działa! Zwróć uwagę na białe znaki;)

Wersja online

# 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

                                                                                                                                                                                                                                                   

Wydajność:

Hello world!

Wyjaśnienie:

  • Ostatnia linia składa się z kilku kawałków spacji bez przerw (UTF-8: 160dec) oddzielonych regularnymi spacjami.
  • Ruby obsługuje porcje tak, jakby były metodami - ponieważ nie zdefiniowano takich metod, method_missingwywoływana jest, co oszczędza długości porcji
  • Każda porcja reprezentuje jedną cyfrę trzycyfrowej liczby, która reprezentuje znak
  • w at_exitznaki są tworzone przez łączenie cyfr itp. i wyrażenie jest oceniane, w tym przypadkuputs 'Hello world!'
  • Zamiast używać białych znaków UTF-8, możesz także użyć podkreślników dla lepszej widoczności:
def method_missing(m, *a)
  $* << (m.to_s.size-1).to_s
end

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

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

Kopiowanie białych znaków z SE nie działa, ponieważ interpreter znakowania SE zastępuje znaki tabulacji 4 spacjami.
undergroundmonorail

7

Naprzód

Stwórzmy nowe ZADANIE.

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

Wyświetla dwie liczby 32-bitowe w podstawie 74 (4Ah). 74, ponieważ jest to różnica między ASCII „z” i ASCII „0” plus jeden, więc mogę go użyć do wyświetlenia małych słów zaczynających się od liczby. Pierwszy numer to „Hello” (1F836AFEh), a drugi numer to „World” (3A91224Bh). Naprawdę drukuje końcowe spacje po liczbie „Świat”.

Real execution


Dalej ... jeden z niewielu języków SHOUTIER niż SQL. Witamy na stronie!
Jonathan Van Matre

3
Wypróbowałem to na moim Sinclair-ZX-Spectrum Forth i działa ...
Mattsteel

1
... i zdaj sobie sprawę, że użycie innej bazy (4F) będzie zgodne z inną łamigłówką
Mattsteel

6

PHP:

$ words = array („Heart”, „eagle”, „low”, „lonely”, „over”, „SPACE”, „Window”, „optimus”, „rotting”, „list”, „done”, „ !gotowy');

$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)));

Drukuje „Hello World”.
Usuwa pierwszą literę z każdego słowa w tablicy.
Var $findmoże mieć dowolny ciąg pojedynczych bajtów 1 bajt.
Użycie dłuższej wartości dla var $findda dziwne wyniki.


6
Nie patrząc na spoiler, widziałem, że ten ciąg musi być związany z „Hello World”!
SebastianH

Przepraszam, jeśli moja zaciemniona próba nie jest najlepsza. I tak, wzór jest zbyt łatwy, ale przynajmniej spróbowałem czegoś innego. Zmienię to później i sprawię, że będzie nieco mniej oczywisty.
Ismael Miguel

6

Brainfuck

print("Hello World")

Wyjaśnienie

Przynajmniej jeśli twój kompilator ignoruje nieprawidłowe instrukcje, ten program nic nie robi.


Kompilator musi zignorować polecenia niebędące poleceniami, ponieważ są one liczone jako komentarze.
MadTux,

Znam niektóre kompilatory, które na nich popełniają błędy, choć nie potrafię wymienić żadnych.
nyuszika7h

Przypomina mi to inne wyzwanie
Qeole,

5

C ++ 11

Żądam premii za zależność od kompilatora - na przykład będzie to wyglądało inaczej między gcc 4.8 a 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;
    }
}

Objaśnienie zależności kompilatora:

C ++ 11 zmienił wymagania dotyczące funkcji insert () i erase () w standardowych kontenerach, tak że teraz akceptują one stałe iteratory, gdzie wcześniej wymagały iteratorów zmiennych. Właśnie to testuje PrimeHandler. gcc zmieniło tylko standardową bibliotekę, aby była zgodna z 4.9; MSVC 2013 nie jest jeszcze zgodny; Nie wiem o brzęczeniu.

Ogólne wyjaśnienie zachowania:

Klarowny (x) Działanie strumieni nie jasne flagi X , to ustawia się. Dlatego funkcja handle () faktycznie wprowadza strumień w stan błędu, więc każda próba odczytu kończy się niepowodzeniem (i pomocne jest zgłoszenie wyjątku). W ten sam sposób unika się wyjścia błędu.
Destruktor auto-wyjściowy PrimeList dba o to, aby wszelkie dane w nim zapisane były zapisywane jako dane binarne, a nie jako liczby. Oczywiście „inteligentnymi dzielnikami” są w rzeczywistości „Hello World!” zakodowane w little-endian ASCII. A ponieważ zgłoszony jest wyjątek, w BasicHandler nic nie jest dodawane, aw SmartHandler dodawane są tylko „inteligentne dzielniki” (i nigdy nie są usuwane z powodu wspomnianego wyjątku).


4

Delfy

Nie jestem pewien, czy to się liczy, ale powiem wam, jak widziałem to wyzwanie.
Myślałem o napisaniu kodu, który nie wykonałby tego, czego się spodziewałeś.

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.

To, co zrobiłem, to napisanie programu, który zakłada wykonanie funkcji 3, ale faktycznie uruchamia funkcję 2 i po prostu kończy działanie, gdy tylko się uruchomi. Podpowiedzi
to: SieveOfEratosthenes Algorytm generowania liczb pierwszych
Var liczby pierwsze i kod maxNum
: WriteLn('Input your number');readln(maxNum);
który jest kodem, który nigdy nie zostanie osiągnięty, ponieważ booleany są Falsedomyślnie


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

Uruchom z GHC, a wydrukuje hello World. With Hugs (który implementuje wielozadaniowość kooperacyjną) Zawsze kończy pracę bez drukowania niczego.


4

JS

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

Nic nie robi. Żaden błąd. Brak danych wyjściowych


4

Matlab

Oto kod, który może z grubsza wykonywać różne operacje, czy możesz przewidzieć przepływ?

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

Oto wskazówka:

Bez względu na wprowadzony numer lub symbol, zawsze znajdziesz się w tym samym miejscu


1
Brawo za utrudnienie wyeliminowania którejkolwiek z 4 funkcji.
PyRulez

4

Ten robi oba bonusy. Na końcu spójrz na spoilery, aby zobaczyć, co robi.

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

W Brainfuck to po prostu zwraca „Hello World”.

Jawa

W Javie zwraca to pierwsze x liczby pierwsze (w zależności od liczby wejściowej) lub wartość akcji danego symbolu giełdy (np. GOOG dla Google). To, który zostanie wybrany, zależy od implementacji obecnie używanego oprogramowania JavaVM, ale w przypadku Oracle JavaVM powinno ono uzyskać wartość giełdową. Możesz także wymusić kalkulator liczby pierwszej (2. premia), komentując linię System.gc (), która z kolei zatrzymuje wywołanie finalize (), aby magicNumber nigdy nie stał się NaN, a zatem nie został zgłoszony żaden wyjątek, który spowodowałby zapasy getter wartości rynkowej do uruchomienia zamiast generatora liczb pierwszych.


4

C, 346 znaków

#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;
}

To stary program, który stworzyłem 10 lat temu. Drukuje „Witaj, świecie!” Kod wykorzystuje liczby palindromowe w podstawie 10 i jest nieco zaciemniony.

Nie ufaj wcięciu. Zobacz także: http://oeis.org/A006577

Och, prawie zapomniałem ... Program działa tylko po uruchomieniu bez argumentów wiersza poleceń. Ponadto, jeśli uruchomisz go z 11 argumentami wiersza poleceń, wydaje się, że wchodzi w nieskończoną pętlę. 12 jest w porządku.


3

Malbolge

Powiedziałbym, że nie można go już zaciemnić niż Malbolge;)

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

Po prostu drukuje „Witaj, świecie”. Wszystkie kredyty trafiają do Wikipedii, ponieważ wciąż nie rozumiem tego języka ...


2
nikt nie powinien rozumieć tego języka.
Sp0T

5
Niektórzy twierdzą, że kiedy Malbolge zostanie w końcu zrozumiany, ziemia pęknie i wszyscy będziemy zniewoleni, aby pracować gigantyczną linię montażową, zastępując jej rdzeń środkiem do żucia w nugacie. ps Prosimy użytkowników o oznaczenie swoich odpowiedzi jako wiki społeczności i link do źródła, jeśli praca nie jest ich własnością. Dzięki!!
Jonathan Van Matre

Prawie mogłem poradzić sobie z trójskładowymi i wielokrotnymi nagraniami, ale każda przeklęta operacja niszczy pamięć! Okropne, zepsute smutki języka.
luser droog

3

bash / sh, python

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__'")

Spowodowałoby to:

Hello world...

po wykonaniu z bash.

Kiedy ten sam kod jest wykonywany z shlub bashw trybie posix, tzn. Mówiąc bash --posix filename, nie generuje on żadnego wyniku.

Podstawianie procesów nie działa shani w trybie, ani w bashtrybie pracy POSIX. Po wykonaniu z bashzastępowanie procesu działa, a dane wejściowe są oceniane za pomocą python. W przeciwnym razie podstawienie procesu spowoduje błąd, który zostanie przekierowany /dev/null.


Zastanawiasz się, czy ukrywanie go liczy się jako „brak danych wyjściowych, brak błędów”?
Bill Woodger

@BillWoodger Jeśli jest to nielegalne, istnieją inne rozwiązania (try / catch itp.), Które moim zdaniem są bardzo podobne.
devnull

Uczciwy punkt. Myślę, że twoje jest trochę bardziej oczywiste, ponieważ wyjście z czegokolwiek może być w ten sposób ukryte, ale ponieważ używasz rzeczy, która faktycznie obejmuje to przetwarzanie jako część siebie, jestem szczęśliwy :-)
Bill Woodger

3

Teraz, zgodnie z komentarzami i czytając, zrobi to 1 z 3 rzeczy.

  • Zrobi cel liczb pierwszych, jeśli podasz mu liczbę.
  • Będzie wyszukiwał zapasy, jeśli przekażesz go nieliczbowo.
  • Wypisze „Hello World”, jeśli zrobisz coś głupiego

Jednak ten program nie przestrzega zbyt dobrze dokumentacji, ponieważ bez względu na to, co mu dasz ... zawsze wydrukuje CZWARTY cel, co jest niczym.

/**
 * 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;
    }

}

Ten program działa (a raczej nie działa), ponieważ Java ma 0 indeksowanych tablic. Więc powinno być próbowanie dostępu args[0]. Jednak final int arg = 1wartość wskazuje, że uzyskujemy dostęp do pierwszej wartości. Programiści Java wiedzą, że args[1]tak naprawdę jest to druga wartość. Zmień arg na 0, a ten program faktycznie działa zgodnie z jego dokumentacją.


2

JavaScript

Nawet tego nie rozumiem

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

Uwaga: skrypt nie jest mój: oryginalne źródło


Co powiesz na tworzenie w Community-Wiki?
Bill Woodger

2
To trochę zrozumiałe. [] + [] -> '', day() - day() -> 0. Stamtąd wygląda to tak, jakby pobrać dziesiętną reprezentację każdego znaku, a następnie zrobić String.fromCharCodena nim.
Kevin Evans

1

Perl

To moja pierwsza próba napisania zaciemnionego kodu. Mam nadzieję że to polubisz.

#!/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

Ten program pyta o liczbę, a następnie drukuje tyle liczb pierwszych. W przypadku błędu po prostu wydrukuje 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 zapobiega działaniu backspace. W ten sposób powstaje Hello World!


0

Ruby 2.0.0 + 1 bonus

Okej, więc wyjaśnię bonus w spoilerze. Ale jest to właściwie tylko okrągły sposób wydrukowania „Hello World!” w Ruby.

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

A wynik:

Co?

Okej, więc większość ludzi, którzy pracowali z Ruby, wie, co robią wszystkie te rzeczy i nie będzie tym zaskoczona. Ale evalnie robi tego, co mówi komentarz, ale robi (jak się zapewne spodziewałeś). Zamiast zmieniać symbol podziału ( /), górna linia wciąż dzieli $$przez $$gdzie $$jest PID i dzielenie ich daje 1. Zamiast tegoeval zmienia się jak symbol łopata ( <<) działa. Po jego evalzakończeniu symbol łopaty absolutnie nic nie robi. Możesz zobaczyć, jak to zrobiłem przez Base64 dekodowanie rzeczy po__END__

I bonus:

Skomentuj drugą linię, wypisze „Hello World!”. Może to się nie liczy, ponieważ wciąż drukuje jedno miejsce.


0

Matlab

Bardzo prosty mały kod, który prawdopodobnie można łatwo rozszerzyć, aby był bardziej zaciemniony, ale zostawiłem go mniejszy jako dowód zasady, ponieważ podejście jest nieco kiepskie. Jestem całkiem pewien, że nie można obliczyć wyniku bez uruchomienia przynajmniej części kodu.

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

0

C ++ lub C & Bonus nr 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

Odbieram bonus nr 1. clang/gccvs.clang++/g++ .

Z C ++

clang++ -trigraphs obfuscate.c

Skompilowany jako C ++, wychodzi.

Z C.

gcc -trigraphs obfuscate.c

Skompilowany jako C, wypisuje „Witaj, świecie!”

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.