Obfuscation Challenge [chiuso]


24

Devi scrivere un programma che esegua una delle seguenti operazioni.

  1. Visualizza solo "Hello World" non fa altro
  2. Esce e nient'altro (nessun output, nessun errore.)
  3. Accetta una riga di input, la analizza come un numero intero, visualizza la prima che contiene molti numeri primi (o dà un bell'errore se viene fornito un input che non può essere analizzato come numero intero o è inferiore a 0.)
  4. Data una riga di input, analizza che ha un simbolo di borsa e controlla online il valore corrente della borsa e la sua modifica.

La cattura, non dovrebbe essere evidente quale funzione svolge. Vale a dire, per qualcuno che guarda il tuo codice, non dovrebbe essere chiaro quale funzione svolgerà. Inoltre, può solo eseguire ed essere in grado di svolgere una funzione (non può scegliere e scegliere.) Quanto è buono un programma è determinato da quanto è incerto qualcuno che lo guarda su quale sia la sua funzione e anche quanto familiare che la persona è con quella lingua.

BONUS: Se lo fai in modo intelligente, anche se per qualsiasi compilatore / interprete e piattaforma, il programma eseguirà anche la stessa funzione, diversi compilatori / interpreti o piattaforme, svolgerà una funzione diversa. Questo bonus può essere raccolto solo se fatto in modo intelligente.

BONUS: se il tuo programma contiene solo codice che è in grado di una funzione (non salvare nulla, poiché il codice vuoto è in grado di farlo), e non è possibile effettuare una semplice modifica non correlata alla funzione per consentirgli di svolgere una funzione diversa. Ad esempio: se lo hai fatto

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

Non conterebbe come offuscato. Bool potrebbe essere reso Vero o Falso per farlo stampare "Hello World" o non fare nulla rispettivamente.

BONUS INFINITO: se realizzi entrambi i bonus contemporaneamente, sei magico.

BONUS NEGATIVO: utilizzo di librerie con abilità specifiche per eseguire le funzioni.

Votanti, prendi in considerazione i bonus, perché vince il programma con il maggior numero di voti!

Nota: se dici cosa fa il tuo programma, assicurati di usare la sintassi dello spoiler!


2
Ad essere sincero, non riesco a capire gran parte della domanda. Vado oltre e dirò che capisco solo i 4 punti.
Ismael Miguel,

Crea un programma in modo tale che faccia una delle 4 cose, ma nessuno sa cosa.
PyRulez,

25
E i bonus? Seriamente, anche la domanda è offuscata.
Ismael Miguel,

4
Dato che si tratta di un concorso di popolarità, a cosa serve il bonus?
Ismael Miguel,

1
@MukulKumar - come in, il mio aveva davvero senso?
TheDoctor

Risposte:


43

Lo spazio bianco / Brainfuck / Python

'''inizio''''''''''''  
principali (args) {   	  	   
	parseArgs = args.Find ( '^ ++++++++ ^ [<++++ [<++ <+++ <+++ <+ >>>> az] <+ <+ <AZ [ >]> 0-9] << <--- * $ ')..;
    for (int i = 0; Range (GetLength (parseArgs)); i ++) {validateArg (parseArgs (i));}  	 	
	//nome
    string stockName = "";		 		  
	//ciclo continuo
    for (int i = 0; Range (GetLength (parseArgs)); i ++) {		 		  
	//convalidare
     	if (matchFound = Trova ( 'a + z + A + .Z.0 + 9 + _ +. << * $') {	 				
	//trovato
     	parseArgs (i) .Split ( '> -> +..');}     
	
     	for (int j = 0; Range (GetLength (parseArgs (i))); j ++) {	 			
	//Scaricare
    data = ConvertTo.String (eval ("curl -get http://some-stock-ticker-source-url-here.com"));	 				
	stampare;
    stampa dati;			  	 
	
    // separatore di riga		 		  
	
    stampa "--------.";		  	  
	}}
}  


''finire'''''''''''''''

Wikipedia: Whitespace (linguaggio di programmazione)
Online Whitespace Interpreter per testare la risposta
Online Brainfuck Interpreter per testare la risposta

Uscita (spazio bianco / Brainfuck):

Ciao mondo
Ouput (Python):
niente, ma funziona correttamente.


2
Questo è davvero fantastico! Penso che dovresti aggiornare la descrizione. Il codice ovvio non è forse un terzo programma che fa qualcosa? Inoltre, se potessi cambiare uno di uno spazio o uno spazio per eseguire un'altra funzione, ti darei il bonus INFINITY!
SebastianH,

1
In che lingua è il programma finto?
durron597,

1
@ durron597 È uno strano ibrido C # e Python. Stavo per fare tutto in C # ma era difficile far funzionare la sintassi fino in fondo.
Grove

@SebastianH È un finto programma per mascherare la sua vera funzione.
Grove

La funzionalità Python è troppo trasparente. Dopo aver visto i primi 3 caratteri, devi solo scansionare il resto del codice per la fine della stringa letterale.
user2357112 supporta 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゚])(゚Θ゚))('_');

Avvisi "Hello World"
Risposto a /codegolf//a/3946/803
Dato che non ho trovato questa risposta, trasformandola in un wiki della community


28
Sei del tutto sicuro che questo non sia APL?
mniip,

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

11
Vedo emoticon ovunque ..
Thorkil Holm-Jacobsen,

1
Questo è il miglior utilizzo di Unicode in JavaScript che abbia mai visto!
Cole Johnson,

4
+1 per lo smiley: (o^_^o).
Amal Murali

31

Assembly x86 MS-DOS

Perché non è già offuscato quando è in fase di assemblaggio, rendiamolo ancora peggio! Questo DOVREBBE funzionare con qualsiasi assemblatore che può essere assemblato in un file COM, ma ho provato solo con TASM per DOS usando 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

Questo è un codice auto-modificante che fa diverse cose:
1) Modifica i primi 12 byte in 'Hello World [simbolo del dollaro]'
2) Modifica apparentemente fuori posto 'dec cl' e 'movsx dx cl' in 'nop ',' mov ah, 9 ',' int 021h '
3) Tutto è fortemente intervallato l'uno nell'altro. Questo sta anche facendo un test dei flag per vedere se la tua CPU supporta CPUID
4) Valori esadecimali convertiti in decimali in modo da non avere idea ...
5) Anche se lo hai fatto, usa xor, o, ee sub per modificare l'esistente codice ai valori corretti. Nessun valore diretto.
6) Se la tua CPU non supporta CPUID (non un Pentium o superiore, vedi DOSBox per un ottimo esempio), vedi "Hello World". Altrimenti, non succede nulla.


25
Scrivere un programma in Assembler è abbastanza offuscato! xD
SebastianH,

25

C

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, con le impostazioni predefinite, questa è la cosa migliore. Usando tcc, ottieni Hello World. Il compilatore CA può riscrivere una printf("String\n")chiamata in una puts("String")chiamata. Questo è più efficiente, ma presume che nessuno abbia scritto da solo puts. Un compilatore non deve farlo, quindi a seconda del compilatore e delle impostazioni del compilatore, otterrai uno Hello Worldo un gruppo di numeri primi. Le printfchiamate in putsentrata non sono interessate, poiché non corrispondono al modello esatto. Penso di qualificarmi per il bonus.


16

LOLCODE

Questa lingua è già offuscata da sola. Ecco il mio codice:

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

Questo codice si chiude e non fa nient'altro (nessun output, nessun errore). Ma sebbene non faccia assolutamente nulla, funziona come un incantesimo (testato con la versione che conteneva una VISIBLE "test"dichiarazione prima dell'ultima affermazione KTHXBYE, dimostrando che tutto va bene). Fondamentalmente dichiara variabili, cambia i loro tipi, entra in loop e costruisce if e case case, ha persino una linea che stamperebbe "Hello World!" se mai raggiunto (se solo raggiunto ...). Uno spreco totale di calcolo :)


1
Se lo desideri, puoi provarlo qui
gilbertohasnofb,

10

JavaScript (ES6)

Utilizzo di pragma black magicper rivelare il vero potere di 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);

Produzione:

Hello World

spiegazioni:

Questo programma è in realtà abbastanza semplice e potrebbe essere sintetizzato come segue.
Tutto il resto se lo zucchero sintattico!

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

Ecco la versione annotata:

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

qualche spiegazione? per il pragma?
masterX244,

10

COBOL (IBM Enterprise COBOL)

   ID

Se dimostrato che, molto vicino al 100% dei programmatori COBOL mainframe IBM direbbe "che non è nemmeno un programma, che non verrà compilato!". Più esperienza hanno, meno è probabile che pensino che verrà compilata (poiché i COBOL mainframe precedenti erano molto più severi).

Quindi chiedi "se si compila, cosa fa?" Dicevano: "non si compila, ma se lo facesse, darebbe una sorta di errore, probabilmente Language Environment darebbe un U4038 o qualcosa del genere".

Riuscito ad accorciarlo. Esistono quattro DIVISIONI in un programma COBOL. IDENTIFICAZIONE / ID, AMBIENTE, DATI, PROCEDURA. Si scopre che PROCEDURA richiede la parola DIVISIONE e gli altri no. Indovina quale ho rimosso per primo e supponevo che le altre parole DIVISIONE fossero obbligatorie ... ulteriori chiarimenti rivelati altrimenti. Peccato che non sia Golf. Un programma COBOL a due caratteri ...

OK, sì, il compilatore geme e in effetti gli dà un codice di ritorno di otto. Di solito le persone non generano nemmeno il codice oggetto per, per non parlare del tentativo di eseguire, programmi con un codice di ritorno di otto. Tuttavia, questo è un caso in cui nessuno degli errori di livello E influisce sul codice generato. Quindi il codice viene eseguito senza problemi, se lo si genera.
La fonte sopra è effettivamente l'equivalente di questo:
ID DIVISION.
DIVISIONE PROCEDURA.
GOBACK
.
Il che semplicemente ritorna da dove è venuto.


2
Il mio primo spoiler in assoluto. C'è del codice lì dentro. Tutti in salamoia. Ratti. Altre ricerche ...
Bill Woodger,

Leggermente meno in salamoia, ma comunque non buono. In ritardo qui. Vedrò se ci sono più spoiler che posso rubare da domani. Err ... più tardi oggi. ID e PROCEDURA iniziano nella colonna otto, GOBACK e punto / punto completo nella colonna 12. L'ID nell'originale è anche la colonna otto, solo per informazioni.
Bill Woodger,

9

Java, C ++ - 11 1 Bonus richiesto

Non sono sicuro se avessi entrambi i bonus ma era già un mal di testa mescolare 2 linguaggi di programmazione ...

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

Ottenere il C ++ tra il codice java che ho già usato su un'altra risposta di Hello World è stato un dolore nel culo. Mi ci è voluto un po 'per trovare una seconda lingua adatta in cui ero in grado di destreggiarmi tra i commenti secondo necessità, in modo che disabilitassero / abilitassero diversamente in lingue diverse


Utilizzo delle trigrafi per uscire da un commento in C ++. Questo è pulito!
FUZxxl,

2
^ È anche una delle scappatoie standard, credo. Sto solo dicendo.
Soham Chowdhury,

8

Python - 1 bonus richiesto

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

In Python 2, 1diviso per 2uguali 0. 1diviso per 0non può essere valutato e genera una divisione per zero errori. Non viene stampato nulla e il programma termina senza errori.

In Python 3, 1/2=> 0.5e 1/0.5=> 2.0. Nessun errore. Hello, World!è stampato.


3
Non so che questo è abbastanza offuscato.
Hosch250,

@hosch250 Ha ragione, non è molto offuscato. La seconda parte è sbagliata però.
PyRulez,

Oh, capisco. Ne fa uno in Python 2 e l'altro in Python 3.
Hosch250

@ hosch250 Oh beh. Almeno ho ottenuto il bonus. Non mi dispiacerà davvero se qualcun altro ruba la parte bonus della mia risposta e la modella. Sarei onorato, anche.
Rainbolt

Basta offuscare hello worldin qualche modo e starai bene.
Hosch250,

7

partita

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

Ciò restituirà un elenco di numeri primi inferiori al valore immesso.
H: \ uprof> obf.bat 12
2,3,5,7,11

Non so che i conteggi contorti siano offuscati, sebbene siano presenti alcuni aspetti dell'offuscamento.


Il programma può eseguire solo una funzione.
PyRulez,

@PyRulez Siamo spiacenti, risolto.
Unlemeat

2
Consiglio anche l'uso di spoiler in modo che le persone non facciano ciò che fa immediatamente.
PyRulez,

+1 per %%%%xD
SebastianH

7

Rubino - o è spazio bianco?

Bene, qualcuno può indovinare cosa faccio? Piccolo suggerimento: se si desidera eseguirlo, copiare tutto il codice nella casella del codice;)

Aggiornamento: la copia del codice non sembra funzionare a causa di problemi relativi a Unicode? Il fork della versione online e quindi la copia del codice sembra funzionare! Cerca lo spazio bianco;)

Versione 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

                                                                                                                                                                                                                                                   

Produzione:

Hello world!

Spiegazione:

  • L'ultima riga è composta da un bel po 'di spazi senza interruzioni (UTF-8: 160dec) separati da spazi regolari.
  • Ruby gestisce i blocchi come se fossero metodi - poiché non sono definiti tali metodi, method_missingviene chiamato, il che consente di risparmiare le lunghezze dei blocchi
  • Ogni blocco rappresenta una cifra di un numero di tre cifre, che rappresenta un carattere
  • nei at_exitpersonaggi si formano concatenando le cifre ecc. e l'espressione viene valutata, in questo casoputs 'Hello world!'
  • Invece di usare gli spazi bianchi UTF-8, puoi anche usare i trattini bassi per una migliore visibilità:
def method_missing(m, *a)
  $* << (m.to_s.size-1).to_s
end

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

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

La copia di Whitespace da SE non funziona perché l'interprete markdown di SE sostituisce i caratteri di tabulazione con 4 spazi.
undergroundmonorail,

7

Via

Creiamo un nuovo TASK.

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

Visualizza due numeri a 32 bit nella base 74 (4Ah). 74 perché è la differenza tra ASCII "z" e ASCII "0" più uno, quindi posso usarlo per visualizzare una piccola parola a partire da un numero. Il primo numero è "Hello" (1F836AFEh) e il secondo numero è "World" (3A91224Bh). Stampa davvero uno spazio finale dopo il numero "Mondo".

Esecuzione reale


Avanti ... una delle poche lingue più POCO di SQL. Benvenuti nel sito!
Jonathan Van Matre,

3
L'ho provato sul mio Sinclair-ZX-Spectrum Forth e funziona ...
Mattsteel

1
... e renditi conto che l'utilizzo di una base diversa (4F) sarà conforme a un altro enigma
Mattsteel,

6

PHP:

$ words = array ('Heart', 'eagle', 'low', 'lonely', 'over', 'SPACE', 'Window', 'optimus', 'putrefazione', 'list', 'done', ' !fatto');

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

Stampa "Hello World".
Decolla la prima lettera da ogni parola dell'array.
Var $findpuò avere qualsiasi stringa a byte singolo di 1 byte.
L'uso di un valore più lungo per var $finddarà output strani.


6
Senza guardare lo spoiler, ho potuto vedere che questa stringa deve essere connessa con "Hello World"!
SebastianH,

Scusate se il mio tentativo offuscato non è il migliore. E sì, lo schema è troppo semplice, ma almeno ho provato qualcosa di diverso. Lo modificherò più tardi e lo renderò un po 'meno ovvio.
Ismael Miguel,

6

Brainfuck

print("Hello World")

Spiegazione

Almeno se il tuo compilatore ignora le istruzioni non valide, questo programma non fa nulla.


Il compilatore deve ignorare i non comandi, poiché contano come commenti.
MadTux,

Conosco alcuni compilatori che sbagliano su di loro, anche se non posso nominarne nessuno.
nyuszika7h


5

C ++ 11

Richiedo il bonus per la dipendenza del compilatore - ad esempio, questo mostrerà un diverso raggio tra gcc 4.8 e 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;
    }
}

Spiegazione sulla dipendenza del compilatore:

C ++ 11 ha modificato i requisiti per le funzioni insert () e erase () in contenitori standard in modo che ora accettino iteratori costanti, dove in precedenza richiedevano iteratori mutabili. Questo è ciò che PrimeHandler testa. gcc ha cambiato la sua libreria standard solo per renderla conforme a 4.9; MSVC 2013 non è ancora conforme; Non so di clang.

Spiegazione generale del comportamento:

La funzione clear (x) dei flussi non cancella la bandiera x , la imposta . Pertanto, la funzione handle () in realtà mette lo stream in stato di errore, quindi qualsiasi tentativo di leggere fallisce (e genera utilmente un'eccezione). Allo stesso modo, l'output dell'errore viene evitato.
Il distruttore di output automatico di PrimeList si assicura che tutti i dati in esso contenuti siano scritti, come binari, non come numeri. Naturalmente, i "divisori intelligenti" sono in realtà "Hello World!" codificato in ASCII little-endian. E poiché viene generata un'eccezione, in BasicHandler non viene aggiunto nulla e in SmartHandler vengono aggiunti solo i "divisori intelligenti" (e mai rimossi, a causa di detta eccezione).


4

Delphi

Non sono sicuro se questo conta, ma ti dirò come ho visto questa sfida.
Il mio pensiero era di scrivere codice che non avrebbe eseguito ciò che ti aspettavi.

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.

Quello che ho fatto è stato scrivere un programma che implica l'esecuzione della funzione 3 ma in realtà esegue la funzione 2 ed esce semplicemente non appena avviato.
I suggerimenti sono: Algoritmo SieveOfEratosthenes per la generazione di numeri primi
Var primi e codice maxNum
: WriteLn('Input your number');readln(maxNum);
che è il codice che non sarà mai raggiunto poiché i booleani sono Falsepredefiniti


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

Corri con GHC e stamperà ciao mondo. Con Hugs (che implementa il multitasking cooperativo) Uscirà sempre senza stampare nulla.


4

JS

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

Non fa nulla. Nessun errore. Nessuna uscita


4

Matlab

Ecco un codice che può eseguire approssimativamente varie operazioni, puoi prevedere il flusso?

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

Ecco un suggerimento:

Indipendentemente dal numero o dal ticker che immetti, finirai sempre nello stesso punto


1
Bravo per aver reso difficile eliminare una delle 4 funzioni.
PyRulez,

4

Questo fa entrambi i bonus. Dai un'occhiata agli spoiler alla fine per vedere cosa fa.

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

In Brainfuck questo restituisce semplicemente "Hello World".

Giava

In Java questo restituisce i primi x numeri primi (a seconda del numero di input) o il valore di borsa del simbolo di borsa dato (ad esempio GOOG per Google). La scelta dipende dall'implementazione di JavaVM attualmente in uso, ma con Oracle JavaVM dovrebbe ottenere il valore del mercato azionario. Puoi anche forzare il calcolatore del numero primo (secondo bonus) commentando la riga System.gc (), che a sua volta interrompe la chiamata finalize () in modo che il magicNumber non diventi mai NaN e quindi non venga generata alcuna eccezione che causerebbe lo stock valore di mercato getter da eseguire invece del generatore di numeri primi.


4

C, 346 caratteri

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

Questo è un vecchio programma che ho creato 10 anni fa. In realtà stampa "Ciao, mondo!" Il codice utilizza numeri palindromici nella base 10 ed è leggermente offuscato.

Non fidarti del rientro. Inoltre, vedi: http://oeis.org/A006577

Oh, ho quasi dimenticato ... Il programma funziona solo se avviato senza argomenti da riga di comando. Inoltre, se lo si avvia con 11 argomenti della riga di comando, sembra che entri in un ciclo infinito. 12 va bene però.


3

Malbolge

Direi che non può essere più offuscato di Malbolge;)

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

Stampa solo "Ciao, mondo". Tutti i crediti vanno su Wikipedia dal momento che non sto ancora ottenendo questa lingua ...


2
nessuno dovrebbe capire questa lingua ..
Sp0T

5
Alcuni dicono che quando Malbolge sarà finalmente compreso, la terra si aprirà e saremo tutti ridotti in schiavitù per lavorare una gigantesca catena di montaggio che sostituirà il suo nucleo con un centro di torrone gommoso. ps Chiediamo che gli utenti taggino le loro risposte come wiki della comunità e si colleghino alla fonte, quando il lavoro non è il loro. Grazie!!
Jonathan Van Matre,

Potrei quasi occuparmi del ternario e delle ripetizioni multiple, ma ogni dannata operazione trasporta un po 'di memoria! Un orribile schifo di una lingua.
Luser droog

3

bash / sh, pitone

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

Ciò produrrebbe:

Hello world...

quando eseguito con bash.

Quando lo stesso codice viene eseguito con sho con bashin modalità posix, vale a dire dicendo bash --posix filename, non produce alcun output.

La sostituzione del processo non funziona dentro sho dentro bashquando è in esecuzione in modalità POSIX. Se eseguito con bash, la sostituzione del processo funziona e l'input viene valutato usando python. In caso contrario, la sostituzione del processo provoca un errore a cui viene reindirizzato /dev/null.


Ti chiedi se nasconderlo conta come "nessun output, nessun errore"?
Bill Woodger,

@BillWoodger Se è illegale, allora ci sono altre soluzioni (try / catch ecc.) Che sono, a mio avviso, abbastanza simili.
devnull

Punto valido. Immagino che il tuo sia solo un po 'più ovvio, perché l'output di qualsiasi cosa potrebbe essere nascosto in quel modo, ma dal momento che stai usando la cosa che include tale elaborazione come parte di se stesso, sono felice :-)
Bill Woodger

3

Ora, secondo i commenti e leggendolo, questo farà 1 di 3 cose.

  • Farà l'obiettivo dei numeri primi se gli passi un numero.
  • Cercherà le scorte se gli passi un non numero.
  • Stampa "Hello World" se fai qualcosa di stupido

Tuttavia, questo programma non segue molto bene la sua documentazione, perché non importa cosa gli dai ... stampa sempre il QUARTO obiettivo, che è nulla.

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

}

Questo programma funziona (o piuttosto fallisce) perché Java ha 0 array indicizzati. Quindi dovrebbe tentare di accedere args[0]. Tuttavia, il final int arg = 1valore dice che stiamo accedendo al primo valore. Gli sviluppatori Java sanno che in args[1]realtà è il secondo valore. Cambia arg su 0 e questo programma funziona davvero secondo la sua documentazione.


2

Javascript

Non lo capisco nemmeno

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

Nota che lo script non è mio: fonte originale


Che ne dici di fare in Community Wiki allora?
Bill Woodger,

2
È abbastanza comprensibile. [] + [] -> '', day() - day() -> 0. Da lì, sembra solo ottenere la rappresentazione decimale di ogni carattere, quindi eseguirne uno String.fromCharCode.
Kevin Evans,

1

Perl

Questo è il mio primo tentativo di scrivere codice offuscato. Spero ti piaccia.

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

Questo programma richiede un numero e quindi stampa tanti numeri primi. In caso di errore verrà semplicemente stampato 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 impedisce al backspace di funzionare. Questo produce Hello World!


0

Ruby 2.0.0 + 1 Bonus

Ok, quindi ti spiego il bonus nello spoiler. Ma questo è praticamente solo un modo rotonda per stampare "Hello World!" in 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

E l'output:

Che cosa?

Ok, quindi la maggior parte delle persone che hanno lavorato con Ruby sanno cosa fanno tutte queste cose e non ne saranno sorprese. Ma il evalnon fa quello che dice il commento (come probabilmente ti aspettavi). Invece di cambiare il simbolo di divisione ( /), la riga superiore divide ancora $$da $$dove si $$trova il PID e dividendoli si ottiene 1. Invece, evalcambia il modo in cui funziona il simbolo della pala ( <<). Dopo che è eval, il simbolo della pala non fa assolutamente nulla. Puoi vedere come ho fatto questo decodificando Base64 dopo il__END__

E il bonus:

Commenta la seconda riga, stampa "Hello World!". Forse questo non conta, perché stampa ancora uno spazio.


0

Matlab

Piccolo codice molto semplice, probabilmente potrebbe essere facilmente ampliato per renderlo più offuscato, ma l'ho lasciato più piccolo come prova di principio, perché l'approccio è un po 'zoppo. Abbastanza sicuro che è impossibile capire il risultato senza almeno eseguire parte del codice.

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

0

C ++ o C e bonus n. 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

Sostengo bonus No. 1. clang/gccvs. clang++/g++.

Con C ++

clang++ -trigraphs obfuscate.c

Compilato come C ++, esce.

Con C

gcc -trigraphs obfuscate.c

Compilato come C, stampa "Ciao, mondo!"

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.