Obfuscation Challenge [fermé]


24

Vous devez écrire un programme qui effectue l'une des actions suivantes.

  1. N'affiche que "Hello World" ne fait rien d'autre
  2. Quitte et rien d'autre (pas de sortie, pas d'erreurs.)
  3. Prend une ligne d'entrée, l'analyse en tant qu'entier, affiche le premier nombre de nombres premiers (ou donne une belle erreur si une entrée ne peut pas être analysée en tant qu'entier ou est inférieure à 0.)
  4. Étant donné une ligne d'entrée, il analyse son symbole boursier et vérifie en ligne la valeur actuelle du stock et sa variation.

Le hic, il ne devrait pas être évident quelle fonction il remplit. À savoir, pour quelqu'un qui regarde votre code, il ne devrait pas être évident quelle fonction il fera. En outre, il ne peut exécuter et ne peut exécuter qu'une seule fonction (il ne peut pas choisir). La qualité d'un programme est déterminée par le degré d'incertitude de quelqu'un qui le regarde quant à sa fonction et aussi par sa familiarité. personne est avec cette langue.

BONUS: Si vous le faites de manière intelligente, bien que pour n'importe quel compilateur / intrprète et plate-forme, le programme exécutera également la même fonction, différents compilateurs / interprètes ou plates-formes, il exécutera une fonction différente. Ce bonus ne peut être collecté que s'il est malin.

BONUS: Si votre programme ne contient que du code capable d'une fonction (ne rien enregistrer, car le code vide en est capable), et qu'il n'est pas possible de faire une simple modification sans rapport avec la fonction pour lui permettre d'exécuter une fonction différente. Par exemple: si vous l'avez fait

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

Ne compterait pas car obfuscatedBool pourrait être défini sur True ou False pour le faire imprimer "Hello World" ou ne rien faire respectivement.

BONUS INFINITY: Si vous réalisez les deux bonus simultanément, vous êtes magique.

BONUS NÉGATIF: Utiliser des bibliothèques avec des capacités spécifiques pour faire les fonctions.

Votants, prenez en considération les bonus, car le programme avec le plus de votes gagne!

Remarque: Si vous dites ce que fait votre programme, assurez-vous d'utiliser la syntaxe de spoiler!


2
Pour être honnête, je ne peux pas comprendre la plupart de la question. Je vais plus loin et je dirai que je ne comprends que les 4 points.
Ismael Miguel

Faites un programme tel qu'il fasse l'une des 4 choses, mais personne ne sait quoi.
PyRulez

25
Et les bonus? Sérieusement, même la question est obscurcie.
Ismael Miguel

4
Puisqu'il s'agit d'un concours de popularité, à quoi sert le bonus?
Ismael Miguel

1
@MukulKumar - comme dans, le mien avait vraiment du sens?
TheDoctor

Réponses:


43

Espace blanc / Brainfuck / Python

'''commencer''''''''''''  
main (args) {   	  	   
	parseArgs = args.Find ('^ ++++++++ ^ [<++++ [<++ ++ +++ <+++ <+ >>>> az] <+ <+ <AZ [ >]> 0-9] <<. <---. * $ ');
    for (int i = 0; Range (GetLength (parseArgs)); i ++) {validateArg (parseArgs (i));}  	 	
	//prénom
    chaîne stockName = "";		 		  
	//boucle
    for (int i = 0; Range (GetLength (parseArgs)); i ++) {		 		  
	//valider
     	if (matchFound = Find ('a + z + A + .Z.0 + 9 + _ +. << * $') {	 				
	//a trouvé
     	parseArgs (i) .Split ('> -.>. +');}     
	
     	for (int j = 0; Range (GetLength (parseArgs (i))); j ++) {	 			
	//Télécharger
    data = ConvertTo.String (eval ("curl -get http://some-stock-ticker-source-url-here.com"));	 				
	impression;
    imprimer des données;			  	 
	
    // séparateur de lignes		 		  
	
    impression "--------.";		  	  
	}}
}  


''terminer'''''''''''''''

Wikipédia: espace blanc (langage de programmation)
Interprète d'espace blanc en ligne pour tester la réponse
Interprète Brainfuck en ligne pour tester la réponse

Sortie (espace blanc / Brainfuck):

Bonjour le monde
Ouput (Python):
rien, mais fonctionne correctement.


2
C'est vraiment cool! Je pense que vous devriez mettre à jour la description. Le code évident n'est-il pas un troisième programme qui fait aussi quelque chose? De plus, si vous pouviez changer de cerveau ou d'espace pour effectuer l'une des autres fonctions, je vous donnerais le bonus INFINITY!
SebastianH

1
Quelle est la langue du programme de simulation?
durron597

1
@ durron597 C'est un étrange hybride C # et Python. J'allais tout faire en C # mais il était difficile de faire fonctionner la syntaxe tout au long.
grovesNL

@SebastianH C'est un prétendu programme pour masquer sa fonction réelle.
grovesNL

La fonctionnalité Python est trop transparente. Après avoir vu les 3 premiers caractères, il vous suffit de scanner le reste du code pour la fin du littéral de chaîne.
user2357112 prend en charge 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゚])(゚Θ゚))('_');

Alertes "Hello World" a
été répondu à /codegolf//a/3946/803
Étant donné que je n'ai pas trouvé cette réponse, ce qui en fait un wiki communautaire


28
Êtes-vous entièrement sûr que ce n'est pas APL?
mniip

2
@mniip Oh ouais !! c'est JS. Démo jsfiddle.net/7mqL8
Clyde Lobo

11
Je vois des smileys partout ..
Thorkil Holm-Jacobsen

1
C'est la meilleure utilisation d'Unicode en JavaScript que j'aie jamais vue!
Cole Johnson

4
+1 pour le smiley: (o^_^o).
Amal Murali

31

Assemblage MS-DOS x86

Parce qu'il n'est pas déjà obscurci quand il est en assemblage, faisons encore pire! Cela DEVRAIT fonctionner avec n'importe quel assembleur pouvant s'assembler dans un fichier COM, mais je n'ai testé qu'avec TASM pour DOS en utilisant 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

Il s'agit d'un code auto-modifiant qui fait plusieurs choses:
1) Il modifie les 12 premiers octets en «Hello World [signe dollar]»
2) Il modifie le «dec cl» apparemment hors de propos et «movsx dx cl» en «nop ',' mov ah, 9 ',' int 021h '
3) Tout est fortement intercalé. Cela fait également un test de drapeaux pour voir si votre CPU prend en charge CPUID
4) Les valeurs hexadécimales sont converties en décimales afin que vous n'ayez aucune idée ....
5) Même si vous l'avez fait, il utilise xor, ou, et et sub pour modifier l'existant code aux valeurs correctes. Pas de valeurs directes.
6) Si votre CPU ne prend pas en charge CPUID (pas un Pentium ou supérieur, voir DOSBox pour un excellent exemple), vous voyez "Hello World". Sinon, rien ne se passe.


25
Écrire un programme dans Assembler est assez obscurcissant! 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");
}

Sur gcc, avec les paramètres par défaut, cela fait la chose principale. En utilisant tcc, vous obtenez Hello World. Le compilateur AC peut réécrire un printf("String\n")appel dans un puts("String")appel. C'est plus efficace, mais cela suppose que personne n'a écrit le leur puts. Un compilateur n'ont à faire, donc en fonction de votre compilateur et vos paramètres du compilateur, vous obtiendrez soit Hello Worldou un groupe de nombres premiers. Les printfappels putsentrants ne sont pas affectés, car ils ne correspondent pas au modèle exact. Je pense que je suis admissible au bonus.


16

LOLCODE

Ce langage est déjà obscurci par lui-même. Voici mon code:

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

Ce code se ferme et ne fait rien d'autre (pas de sortie, pas d'erreur). Mais bien qu'il ne fasse absolument rien, il fonctionne comme un charme (testé avec une version qui contenait une VISIBLE "test"déclaration avant la dernière déclaration KTHXBYE, prouvant que tout va bien). Fondamentalement, il déclare des variables, change leurs types, entre dans des boucles et des constructions ifs et cases, a même une ligne qui afficherait "Hello World!" si jamais atteint (si seulement atteint ...). Un gaspillage total de calcul :)


1
Si vous le souhaitez, vous pouvez le tester ici
gilbertohasnofb

10

JavaScript (ES6)

Utiliser pragma black magicpour révéler la vraie puissance de 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);

Sortie:

Hello World

Explications:

Ce programme est en fait assez simple et pourrait être résumé comme ci-dessous.
Tout le reste si le sucre syntaxique!

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

Voici la version annotée:

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

une explication? pour le pragma?
masterX244

10

COBOL (IBM Enterprise COBOL)

   ID

Si cela était démontré, près de 100% des programmeurs IBM Mainframe COBOL diraient "ce n'est même pas un programme, cela ne se compilera pas!". Plus ils ont d'expérience, moins ils ont de chances de penser que cela va se compiler (car les anciens COBOL Mainframe étaient beaucoup plus stricts).

Demandez ensuite "s'il compile, que fait-il?" Ils diraient, "cela ne compilera pas, mais si c'était le cas, cela donnerait une sorte d'erreur, probablement Language Language donnerait un U4038 ou quelque chose comme ça".

J'ai réussi à le raccourcir. Il existe quatre DIVISIONS dans un programme COBOL. IDENTIFICATION / ID, ENVIRONNEMENT, DONNÉES, PROCÉDURE. Il s'avère que PROCEDURE requiert le mot DIVISION et les autres non. Devinez lequel j'ai supprimé en premier et j'ai supposé que les autres mots DIVISION étaient obligatoires ... Dommage que ce ne soit pas du golf. Un programme COBOL à deux caractères ...

OK, oui, le compilateur gémit et lui donne en effet un code de retour de huit. Habituellement, les gens ne génèrent même pas le code objet pour, sans parler d'essayer d'exécuter, des programmes avec un code retour de huit. Cependant, il s'agit d'un cas où aucune des erreurs de niveau E n'affecte le code généré. Le code s'exécute donc sans problème, si vous le générez.
La source ci-dessus est effectivement l'équivalent de ceci:
ID DIVISION.
DIVISION DE LA PROCÉDURE.
GOBACK
.
Ce qui revient simplement à son origine.


2
Mon tout premier spoiler. Il y a du code là-dedans. Tous marinés. Les rats. Plus de recherches ...
Bill Woodger

Légèrement moins mariné, mais toujours pas bon. Tard ici. Je vais voir s'il y a plus de spoilers que je peux voler à partir de demain. Euh ... plus tard dans la journée. ID et PROCEDURE commencent dans la colonne huit, GOBACK et point final / période dans la colonne 12. L'ID dans l'original est également la colonne huit, juste pour info.
Bill Woodger

9

Java, C ++ - 11 1 Bonus réclamé

Je ne sais pas si j'ai obtenu les deux bonus, mais c'était déjà un casse-tête de mélanger 2 langages de programmation ...

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

Obtenir le C ++ entre le code java que j'ai déjà utilisé dans une autre réponse de Hello World était une douleur dans le cul. Il m'a fallu un certain temps pour trouver une deuxième langue appropriée où j'ai pu jongler avec les commentaires selon les besoins afin qu'ils se désactivent / s'activent différemment selon les langues


Utilisation de trigraphes pour quitter un commentaire en C ++. C'est bien!
FUZxxl

2
^ C'est aussi l'une des failles standard, je pense. Je dis juste.
Soham Chowdhury

8

Python - 1 bonus réclamé

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

En Python 2, 1divisé par 2égal 0. 1divisé par 0ne peut pas être évalué et renvoie une division par zéro erreur. Rien n'est imprimé et le programme se termine toujours sans erreur.

En Python 3, 1/2=> 0.5et 1/0.5=> 2.0. Pas d'erreur. Hello, World!est imprimé.


3
Je ne sais pas si c'est assez obscurci.
Hosch250

@ hosch250 C'est vrai, ce n'est pas très obscur. Mais la deuxième partie est fausse.
PyRulez

Oh je vois. Il en fait un en Python 2 et l'autre en Python 3.
Hosch250

@ hosch250 Oh bien. Au moins, j'ai eu le bonus. Cela ne me dérangera pas vraiment si quelqu'un d'autre vole la partie bonus de ma réponse et la façonne. Je serais même honoré.
Rainbolt

Obscurcissez simplement hello worldd'une certaine manière et tout ira bien.
Hosch250

7

Lot

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

Cela renverra une liste de nombres premiers inférieurs à la valeur entrée.
H: \ uprof> obf.bat 12
2,3,5,7,11

Je ne sais pas si les chiffres alambiqués sont obscurcis, bien qu'il y ait certainement certains aspects de l'obscurcissement.


Le programme ne peut effectuer qu'une seule fonction.
PyRulez

@PyRulez Désolé, corrigé.
unclemeat

2
Je recommande également d'utiliser des spoilers pour que les gens ne le fassent pas immédiatement.
PyRulez

+1 pour %%%%xD
SebastianH

7

Ruby - ou est-ce un espace blanc?

Eh bien, quelqu'un peut-il deviner ce que je fais? Petit conseil: si vous voulez l'exécuter, veuillez copier tout le code dans la zone de code;)

Mise à jour: la copie du code ne semble pas fonctionner en raison de problèmes liés à Unicode? Forker la version en ligne puis copier le code semble fonctionner! Attention aux espaces blancs;)

Version en ligne

# 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

                                                                                                                                                                                                                                                   

Sortie:

Hello world!

Explication:

  • La dernière ligne se compose de quelques morceaux d'espaces sans interruption (UTF-8: 160dec) séparés par des espaces réguliers.
  • Ruby gère les morceaux comme s'ils étaient des méthodes - puisqu'aucune de ces méthodes n'est définie, method_missingest appelée, ce qui économise la longueur des morceaux
  • Chaque bloc représente un chiffre d'un nombre à trois chiffres, ce qui représente un caractère
  • dans at_exitles caractères sont formés en concaténant les chiffres etc. et l'expression est évaluée, dans ce casputs 'Hello world!'
  • Au lieu d'utiliser des espaces blancs UTF-8, vous pouvez également utiliser des traits de soulignement pour une meilleure 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 copie d'espaces à partir de SE ne fonctionne pas car l'interpréteur de démarques de SE remplace les caractères de tabulation par 4 espaces.
undergroundmonorail

7

Forth

Créons une nouvelle TÂCHE.

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

Il affiche deux nombres de 32 bits en base 74 (4Ah). 74 parce que c'est la différence entre ASCII "z" et ASCII "0" plus un, donc je peux l'utiliser pour afficher un petit mot à partir d'un nombre. Le premier numéro est "Bonjour" (1F836AFEh) et le deuxième numéro est "Monde" (3A91224Bh). Il imprime vraiment un espace de fin après le numéro "World".

Exécution réelle


Quatrième ... l'un des rares langages SHOUTIER que SQL. Bienvenue sur le site!
Jonathan Van Matre

3
Je l'ai essayé sur mon Sinclair-ZX-Spectrum Forth et ça marche ...
Mattsteel

1
... et réalisez que l'utilisation d'une base différente (4F) sera conforme à un autre puzzle
Mattsteel

6

PHP:

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

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

Imprime «Bonjour tout le monde».
Il enlève la 1ère lettre de chaque mot du tableau.
La var $findpeut avoir n'importe quelle chaîne d'un octet de 1 octet.
L'utilisation d'une valeur plus longue pour la var $finddonnera des sorties étranges.


6
Sans regarder le spoiler, j'ai pu voir que cette chaîne devait être connectée avec "Hello World"!
SebastianH

Désolé si mon essai obscur n'est pas le meilleur. Et oui, le motif est trop facile, mais au moins j'ai essayé quelque chose de différent. Je vais le modifier plus tard et le rendre un peu moins évident.
Ismael Miguel

6

Brainfuck

print("Hello World")

Explication

Au moins si votre compilateur ignore les instructions invalides, ce programme ne fait rien.


Le compilateur doit ignorer les non-commandes, car elles comptent comme des commentaires.
MadTux

Je connais certains compilateurs qui font une erreur sur eux, bien que je ne puisse en nommer aucun.
nyuszika7h

Me rappelle cet autre défi
Qeole

5

C ++ 11

Je réclame le bonus pour la dépendance du compilateur - par exemple, cela présentera un beahviour différent entre gcc 4.8 et 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;
    }
}

Explication de la dépendance du compilateur:

C ++ 11 a modifié les exigences pour les fonctions insert () et erase () dans les conteneurs standard afin qu'ils acceptent désormais les itérateurs constants, alors qu'auparavant ils nécessitaient des itérateurs mutables. C'est ce que PrimeHandler teste. gcc a seulement changé sa bibliothèque standard pour être conforme en 4.9; MSVC 2013 n'est pas encore conforme; Je ne connais pas Clang.

Explication générale du comportement:

La fonction clear (x) des flux ne supprime pas le drapeau x , elle le définit . Par conséquent, la fonction handle () place le flux dans un état d'erreur, donc toute tentative de lecture échoue (et déclenche utilement une exception). De la même manière, la sortie d'erreur est évitée.
Le destructeur de sortie automatique de PrimeList s'assure que toutes les données qu'il contient sont écrites - sous forme binaire, pas sous forme de nombres. Bien sûr, les "diviseurs intelligents" sont en fait "Hello World!" encodé en ASCII petit-boutien. Et parce qu'une exception est levée, rien n'est ajouté dans BasicHandler, et seuls les «diviseurs intelligents» sont ajoutés dans SmartHandler (et ne sont jamais supprimés, en raison de cette exception).


4

Delphes

Je ne sais pas si cela compte, mais je vais vous dire comment j'ai vu ce défi.
Ma pensée était d'écrire du code qui n'exécuterait pas ce que vous attendiez.

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.

Ce que j'ai fait était d'écrire un programme qui implique d'exécuter la fonction 3 mais exécute en fait la fonction 2 et quitte simplement dès son démarrage.
Les astuces sont: SieveOfEratosthenes Algorithme pour générer des nombres premiers
Var nombres premiers et code maxNum
: WriteLn('Input your number');readln(maxNum);
qui est le code qui ne sera jamais atteint car les booléens sont Falsepar défaut


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

Exécutez avec GHC et il imprimera bonjour World. Avec Hugs (qui implémente le multitâche coopératif) Il s'arrêtera toujours sans rien imprimer.


4

JS

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

Ne fait rien. Pas d'erreur. Pas de sortie


4

Matlab

Voici du code qui peut effectuer approximativement diverses opérations, pouvez-vous prédire le flux?

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

Voici un indice:

Quel que soit le numéro ou le ticker que vous saisissez, vous vous retrouverez toujours au même endroit


1
Bravo pour avoir compliqué l'élimination de l'une des 4 fonctions.
PyRulez

4

Celui-ci fait les deux bonus. Jetez un œil aux spoilers à la fin pour voir ce qu'il fait.

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

Dans Brainfuck, cela renvoie simplement "Hello World".

Java

En Java, cela renvoie soit les premiers x premiers nombres (en fonction du nombre entré) soit la valeur boursière du symbole boursier donné (par exemple GOOG pour Google). Celui qui est choisi dépend de l'implémentation du JavaVM actuellement utilisé, mais avec Oracle JavaVM, il devrait obtenir la valeur boursière. Vous pouvez également forcer la calculatrice du nombre premier (2e bonus) en commentant la ligne System.gc (), qui à son tour arrête l'appel finalize () afin que le magicNumber ne devienne jamais NaN et donc aucune exception n'est levée qui pourrait provoquer le stock getter de valeur marchande à exécuter au lieu du générateur de nombres premiers.


4

C, 346 caractères

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

Il s'agit d'un ancien programme que j'ai créé il y a plus de 10 ans. Il affiche en fait "Bonjour, monde!" Le code utilise des nombres palindromiques en base 10 et est légèrement obscurci.

Ne faites pas confiance à l'indentation. Regarde aussi: http://oeis.org/A006577

Oh, j'ai presque oublié ... Le programme ne fonctionne que lorsqu'il est démarré sans arguments de ligne de commande. De plus, si vous le démarrez avec 11 arguments de ligne de commande, il semble entrer dans une boucle infinie. 12 est très bien cependant.


3

Malbolge

Je dirais que ça ne peut pas être plus obscurci que Malbolge;)

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

Il affiche simplement "Bonjour, monde". Tous les crédits vont à Wikipedia car je ne comprends toujours pas cette langue ...


2
personne n'est censé comprendre cette langue ..
Sp0T

5
Certains disent que lorsque Malbolge sera enfin compris, la terre s'ouvrira et nous serons tous asservis pour travailler sur une chaîne de montage géante remplaçant son noyau par un centre de nougat moelleux. ps Nous demandons aux utilisateurs de marquer leurs réponses comme wiki communautaire et de créer un lien vers la source, lorsque le travail n'est pas le leur. Merci!!
Jonathan Van Matre

Je pourrais presque gérer les recodages ternaires et multiples, mais chaque opération maudite sape de la mémoire! Une horrible saleté de langue flétrie.
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__'")

Cela produirait:

Hello world...

lorsqu'il est exécuté avec bash.

Lorsque le même code est exécuté avec shou avec bashen mode posix, c'est-à-dire en disant bash --posix filename, il ne produit aucune sortie.

La substitution de processus ne fonctionne pas dans shou dans bashlorsqu'elle s'exécute en mode POSIX. Lorsqu'il est exécuté avec bash, la substitution de processus fonctionne et l'entrée est évaluée à l' aide de python. Sinon, la substitution de processus provoque une erreur qui est redirigée vers /dev/null.


Vous vous demandez si le fait de le cacher est considéré comme "aucune sortie, aucune erreur"?
Bill Woodger

@BillWoodger Si c'est illégal, il existe d'autres solutions (essayer / attraper, etc.) qui sont, à mon avis, assez similaires.
devnull

Bon point. Je suppose que le vôtre est juste un peu plus évident, car la sortie de n'importe quoi pourrait être cachée de cette façon, mais puisque vous utilisez la chose qui inclut réellement ce traitement en tant que partie de lui-même, je suis heureux :-)
Bill Woodger

3

Maintenant, selon les commentaires et en le lisant, cela fera 1 des 3 choses.

  • Il fera l'objectif premier si vous lui passez un nombre.
  • Il recherchera les actions si vous lui passez un non-nombre.
  • Il affichera "Hello World" si vous faites quelque chose de stupide

Cependant, ce programme ne suit pas très bien sa documentation, car peu importe ce que vous lui donnez ... il imprimera toujours le QUATRIÈME objectif, ce qui n'est rien.

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

}

Ce programme fonctionne (ou plutôt échoue) car Java a 0 tableaux indexés. Il devrait donc essayer d'accéder args[0]. Cependant, la final int arg = 1valeur indique que nous accédons à la première valeur. Les développeurs Java savent que args[1]c'est en fait la deuxième valeur. Changez l'argument à 0 et ce programme fonctionne réellement selon sa documentation.


2

Javascript

Je ne comprends même pas ça

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

Notez que le script n'est pas le mien: source originale


Que diriez-vous de faire dans Community-Wiki alors?
Bill Woodger

2
C'est un peu compréhensible. [] + [] -> '', day() - day() -> 0. De là, il semble juste obtenir la représentation décimale de chaque caractère, puis faire un String.fromCharCodesur eux.
Kevin Evans

1

Perl

Ceci est ma première tentative d'écrire du code obscurci. J'espère que vous l'aimerez.

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

Ce programme demande un nombre puis imprime autant de nombres premiers. En cas d'erreur, il s'imprimera simplement 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 empêche le retour arrière de fonctionner. Cela génère Hello World!


0

Ruby 2.0.0 + 1 Bonus

D'accord, je vais donc expliquer le bonus dans le spoiler. Mais c'est à peu près juste un moyen détourné pour imprimer "Hello World!" en 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

Et la sortie:

Quelle?

D'accord, donc la plupart des gens qui ont travaillé avec Ruby savent ce que tout cela fait et ne seront pas surpris par cela. Mais, le evalne fait pas ce que le commentaire dit qu'il fait (comme vous vous y attendiez probablement). Au lieu de changer le symbole de division ( /), la ligne du haut divise toujours $$par $$où se $$trouve le PID et en les divisant, vous obtenez 1. Au lieu de cela, le evalmode de fonctionnement de la pelle ( <<) change . Après cela eval, le symbole de la pelle ne fait absolument rien. Vous pouvez voir comment je l'ai fait en décodant Base64 après le__END__

Et le bonus:

Commentez la deuxième ligne, elle affiche "Hello World!". Peut-être que cela ne compte pas, car il imprime toujours un espace.


0

Matlab

Petit code très simple, pourrait probablement être facilement développé pour le rendre plus obscur, mais je l'ai laissé plus petit comme preuve de principe, car l'approche est un peu boiteuse. Je suis presque sûr qu'il est impossible de comprendre le résultat sans au moins exécuter une partie du code.

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

0

C ++ ou C & 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

Je réclame le bonus n ° 1 clang/gcccontre clang++/g++.

Avec C ++

clang++ -trigraphs obfuscate.c

Compilé en C ++, il se ferme.

Avec C

gcc -trigraphs obfuscate.c

Compilé en C, il affiche "Bonjour tout le monde!"

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.