Tâche:
Créez un programme obscurci qui imprime Hello World!
(exactement comme ça). Votre programme ne contient peut-être aucune chaîne.
Règles:
- Vous pouvez utiliser n'importe quel langage de programmation que vous aimez.
- Faites-le aussi obscur que possible
- Ceci est un concours de popularité , donc la réponse avec le plus de votes positifs l'emporte.
Remarque:
Ce n'est pas un doublon de cette question . Celui-là était du code-golf et ses règles étaient différentes.
popularity-contest
obfuscation
hello-world
Le docteur
la source
la source
:)
/[dehlorw01]/
. En outre, la longueur a été évaluée. En cela, il ne nécessite aucune utilisation de chaînes (et probablement paschar[][]
, flétrir). La longueur ne compte pas, mais la créativité est le principal facteur décisif, ainsi l' étiquette de concours de popularité .Réponses:
Python 2
J'ai joué avec ça hier, alors:
Voici une version plus lisible: http://codepad.org/UzSmoxF2
Remarques:
Une ligne, une seule expression (c.-à-d. Aucune instruction d'impression).
Pas de ficelle, pas d'inte; seules les fonctions, les attributs, les listes, les n-uplets, les mathématiques de base, une
True
et une étoile-arguments.Utilisation minimale builtin (
__import__
,getattr
etchr
une fois chacun).La charge utile peut être modifiée facilement. Voici le programme que j'ai écrit pour le générer.
Edit: J'ai écrit une explication assez substantielle de la façon dont cela fonctionne sur mon blog .
la source
JavaScript
Exécutez-le simplement dans la console du navigateur (par exemple, dans Firebug ou dans Chrome Dev Tools).
la source
C
Une salutation multiplicative:
la source
PHP
J'ai traduit cela en une seule déclaration qui, à mon avis, le rend beaucoup plus difficile à déchiffrer. Cette version utilise seulement 13 caractères uniques.
Version originale
14 personnages uniques. Je pourrais faire un script pour les générer et les nommer "PHPFuck", mais je ne pense pas que ce serait très utile.
Comment ça fonctionne
la source
/H/
et/W/
en elle.PHP
Voici un script PHP simple qui affiche
Hello World!
:Cliquez ici pour la démo.
la source
;)
Espace blanc
Wikipédia:
interprète en ligne pour tester la réponse
Le programme pousse les codes de caractères ASCII à travers les étapes suivantes (extraites de la barre latérale de débogage de l'interprète):
la source
Bash (sous Linux)
J'espère que vos scripts shell ne ressemblent pas à ceci:
attr
fichier est le premier fichier/proc/$PID
avec un nom de fichier à 4 caractères.Voyez si vous pouvez repérer ce qui est caché
eval
.la source
${__[${____}]}${__[${__________}]}${__[${_______}]}${__[${___}${____}]} -${__[${____}]}
(echo -e
) et être remplacée!
par\\${_________}${____}${___}
\\${_________}$[${______}${____}#${_____[${___________}+${__________}]}]
faites aussi un point d'exclamation ;-)_________
cela serait réglé sur0
(que se passerait-il si le script étaitsource
remplacé par une erreur?).:
commande pour effacer toutes les conditions d’erreur précédentes signalées dans$?
.GolfScript
C'était très difficile de créer et de déboguer cela. Il ne contient pas de chaînes, mais uniquement des caractères.
Il produit:
Testez en ligne
Explication
Comment ça marche:
[' '(..4/++]
' '(
convertit l'espace à son code ASCII:32
...
duplique32
deux fois. Maintenant vous avez trois fois32
.4/
divise le sommet32
par 4. Maintenant, vous avez deux fois32
et une fois8
.++
ajoute le32
,32
et8
. Vous obtenez72
, qui est le code ASCII pourH
.[' '(3*)))))]
' '(
convertit l'espace en32
.3*
multiplie le32
avec3
:96
)))))
augmente96
avec 5, vous obtenez101
, qui est le code ASCII poure
.[6`(2*.]
6`(
donne le code ASCII du caractère6
:54
2*
multiplie par 2, vous obtenez108
, ce qui correspond au code ASCIIl
..
duplique lel
['1'..++~]
'1'..
met le caractère1
sur la pile et le duplique deux fois.++
concatène les trois caractères et renvoie la chaîne111
~
le convertit en entier111
, qui est le code ASCII pouro
[8 2?2/]
8 2?
calcule 8 2 , vous obtenez64
2/
divise par 2, vous obtenez32
, qui est le code ASCII pour un espace.[' '(4/.(`\`\+~]
' '(
convertit l'espace en32
.4/.
divise par 4, vous obtenez8
. Le.
duplique.(`
décrémente la seconde8
et la convertit en chaîne.\
échange les deux premiers éléments. Le8
devient l'élément supérieur.`
convertit le8
en chaîne.\
échange les deux premiers éléments. Le7
devient l'élément supérieur.+
concatène les deux chaînes. Vous obtenez87
(sous forme de chaîne).~
convertit la chaîne87
en entier87
, qui est le code ASCII pourW
.['1'.+~2?10-]
'1'.
met le caractère1
sur la pile et le duplique.+~
concatène les deux caractères de la chaîne11
et la convertit en un entier.2?
calcule 11 2 , vous obtenez121
.10-
diminue121
avec 10, vous obtenez le code ASCII pouro
:111
.[13(1)?8((0)))))*-]
13(
met12
sur la pile.1)
met2
sur la pile.?
calcule 12 2 , vous obtenez144
.8((
met6
sur la pile.0)))))
met5
sur la pile.*
se multiplie6
et5
, vous obtenez30
.-
soustrait144
avec30
, vous obtenez114
, qui est le code ASCII pourr
[6`(1)*]
6`(
convertit6
en un caractère et prend son code ASCII:54
1)*
multiplie54
par2
, vous obtenez108
, le code ASCII del
['('(4/2?]
'('(
convertit(
à son code ASCII,40
.4/
divise40
par4
, vous obtenez10
.2?
calcule 10 2 , vous obtenez100
, qui est le code ASCII pourd
[' '()]
' '(
convertit l'espace en son code ASCII:32
)
incrémente le32
, vous obtenez33
, qui est le code ASCII pour!
+++++++++++
concatène tous les codes ASCII en une chaîne.la source
Brainf ***
Je ne sais pas si cela compte vraiment comme étant obscurci, mais il n’utilise jamais plus de quatre symboles plus ou moins à la suite. Donc, il y a ça.
la source
Mathematica
Algèbre simple I maths.
la source
FromCharacterCode
casse toute intrigue ...FromCharacterCode
est maintenant obscurci. Ainsi l'estCoefficientList
.C
Méta-obscurci. Exécuter ceci à travers le préprocesseur vous donne ceci:
Sortie:
Edit: ajout de la coloration syntaxique pour plus de clarté. :-P
la source
u *l=x;
etfree(l);
me donne le même résultat.sauge
Explication:
11382954456.digits(42)
convertit 11382954456 en base 42 et donne un tableau de ses chiffres, qui est[6, 1, 0, 5, 4, 3, 2]
Donc, le
sum
donne en fait la somme de 1 + 2 + 4 + ... + 32 + 64, soit 127Puis
5105882569598991528047304.digits(...)
convertit le nombre en base 128, ce qui donne la liste[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]
Et ce sont les codes ASCII pour la chaîne à imprimer.
la source
Javascript (28187 caractères)
Probablement pas le moyen le plus court de dire bonjour à ce monde.
Généré avec JSFuck
la source
C:
Les sorties:
Hello World!
la source
Malbolge
ou
Je ne sais pas comment cela fonctionne.
Source: http://en.wikipedia.org/wiki/Malbolge#.22Hello_World.21.22_in_Malbolge
la source
Java
C'est ici. Pouvez-vous comprendre comment cela fonctionne?
Attention: très volatile. Peut se rompre spontanément dans le futur.
la source
;)
while((crazy = wtf.read()) != -1) stoned.write(crazy);
xDBefunge
Code qui dit "Bonjour le monde!":
Code qui dit "Bonjour le monde!":
la source
Befunge 98 - 7610 caractères
Basé sur ma réponse ici: https://codegolf.stackexchange.com/a/15736/9498
En prime, cette réponse n'utilise aucun nombre et ne contient aucun caractère redondant (en d'autres termes, aucune combinaison de caractères ne pourrait être supprimée de sorte qu'elle produise le même résultat).
Essayez-le ici (code collé, remplacez chaque instance de
'/'[
avec"/["
): http://www.quirkster.com/iano/js/befunge.htmlComment ça fonctionne:
Bonus supplémentaire: cette publication est si longue qu'il faut environ 1 seconde avant que stackexchange ne reconnaisse les modifications apportées à cette publication.
la source
Brainf ** k
C'est obscurci, et pourtant, cela ne pourrait être plus simple.
Parce que quand tu regardes de près:
la source
JavaScript
Pas de littéraux numériques, pas de littéraux de chaîne, et une seule fonction (non comprise
console.log
)!Démonstration ici .
la source
[]
littéral?No number literals
et j'ai sauté le numéro. Si vous voulez, pouvez utiliser à laArray()
place. Ce ne serait pas un littéral. Et cela le rendrait plus confus. Alternativement, vous pouvez utiliser+false
pour le+[]
. Ou mêmeArray()-Array()
.Python 2.6+
Pas de chaînes, juste une simple fonction polynomiale .
la source
Ce langage de programmation
Pouvez-vous deviner ce que ça fait?
Peut-être devrez-vous aller plus loin dans le terrier du lapin pour le savoir.
AVERTISSEMENT: le langage de programmation est plus récent que le défi.
la source
C
Les commentaires ne servent qu'à induire en erreur des lecteurs non informés.
Les constantes sont construites de telle sorte que sa représentation dans la mémoire (pour les systèmes little-endian) soit la même que la chaîne
"Hello World!"
. Ensuite, le tableau (désintégrations en pointeur) est passé àputs
, oùputs
il le traite aveuglément comme unchar*
et imprime tout jusqu'à ce qu'il apparaisseNUL
(ce qui est codé dans le dernier numéro).Le code est compilé (avec avertissements) et affiche la sortie attendue avec gcc 4.7.0, Windows 7 32 bits.
la source
Java
Testez ici.
Je sais, genre de boiteux d'utiliser des caractères au lieu de chaînes. Bizarre que ça fonctionne correctement. N'est-ce pas?
la source
a[]
.C (honnêtement, préprocesseur à 90% C):
Seulement avec gcc ou un autre compilateur qui supporte la
__COUNTER__
macro.la source
(Je sais que ce n'est pas vraiment bizarre .)
dc
Sortie:
la source
dc<<<5735816763073005734600101863690P
C #
Pas de chaîne ni de littéral caractère, bien que des fonctions de chaîne soient utilisées. Obfuscation via rot13.
la source
UryybJbeyq
énum et incrémente l'index de la lettre à extraire du nom ou réinitialise l'index en fonction de la longueur du nom.C
Pas de chaînes, pas de tableaux, pas de caractères, très peu de «données stockant de grandes constantes» évidentes.
la source
> <> (Poisson)
J'ai fait un petit labyrinthe pour le pointeur d'instruction dans> <>
En ligne> <> interprète ici
la source
C ++
Sortie
la source