125 votes

Défi de programmation : pouvez-vous coder un programme "hello world" sous forme de palindrome ?

Le puzzle consiste donc à écrire un programme hello world dans le langage de votre choix, où le fichier source du programme, en tant que chaîne de caractères, doit être une palindrome .

Pour être clair, la sortie doit être exactement "Hello, World".


Editar:

Avec les commentaires, cela semble trivial (même si je n'y ai pas pensé moi-même [soupir]). cobalt ).

Así que nouvelle règle : pas de commentaires.


Editar:

Je me sens un peu mal d'éditer la question de quelqu'un d'autre pour dire cela, mais cela éliminera beaucoup de non-palindromes qui continuent à apparaître, et je suis fatigué de voir la même erreur simple encore et encore.

Ce qui suit est PAS un palindrome :

()()

Les éléments suivants IS un palindrome :

())(

Les crochets, les parenthèses et tout ce qui doit correspondre sont un obstacle majeur au palindrome, certes, mais cela ne signifie pas que vous pouvez les ignorer et poster des réponses non palindromes.


Langues représentées jusqu'à présent :

C, C++, Bash, elisp, C#, Perl, sh, Windows shell, Java, Common Lisp, Awk, Ruby, Brainfuck, Funge, Python, Machine Language, HQ9+, Assembly, TCL, J, php, Haskell, io, TeX, APL, Javascript, mIRC script, Basic, Orc, Fortran, Unlambda, Pseudo-code, Befunge, CFML, Lua, INTERCAL, VBScript, HTML, sed, PostScript, GolfScript, REBOL, SQL

14voto

Chetan Sastry Points 14742

Basique (il fallait bien que quelqu'un le fasse)

10 PRINT "HELLO WORLD" : GOTO 20 : DNE 02
20 END : 02 OTOG : "DLROW OLLEH" TNIRP 01

Explication : Le Basic est un langage interprété. L'interpréteur n'analyse pas le source, il n'en a pas besoin. ':' est un séparateur d'instruction comme ';' dans les langages de type C.

En fait, cela fonctionne aussi, il imprime Hello World, mais s'arrête avec une erreur.

10 PRINT "HELLO WORLD" : "DLROW OLLEH" TNIRP 01

10voto

Michael Myers Points 82361

Voici ce que j'ai jusqu'à présent en Java :

//}
;class tni
/*//;"*/{ public static void main(String[]gnirtS) { /*"
+"*/System.out.println(new StringBuilder().toString()+'H'+'e'+'l'+'l'+'o'+','+' '+'W'+'o'+'r'+'l'+'d'); /*"
+"*/} /*"
+"*/String gnirtS = " = String gnirtS/*"+
"*/ }/*"+
"*/ ;)'d'+'l'+'r'+'o'+'W'+' '+','+'o'+'l'+'l'+'e'+'H'+)(gnirtSot.)(redliuBgnirtS wen(nltnirp.tuo.metsyS/*"+
"*/ { )String][gnirtS(niam diov citats cilbup {/*";//*/
int ssalc;
}//

Seulement un des commentaires est en violation de l'esprit des règles : le //} dès le début. Les autres ne servent qu'à masquer les sauts de ligne ; je pourrais les supprimer si j'écrivais la partie principale du programme sur une seule ligne.

Le centre du palindrome est le guillemet : String gnirtS = "

Je suis joli Je suis sûr que c'est en fait un palindrome. Quel est le moyen le plus simple de vérifier ?

EDITAR: Ce n'était pas tout à fait ça, mais maintenant ça l'est.

9voto

ephemient Points 87003

Perl, inspiré par le awk y php solutions :

BEGIN{print"Hello, World";exit}tixe;"dlroW ,olleH"tnirp{NIGEB

Il se termine avant de découvrir que le reste du fichier n'a aucun sens.

9voto

mernen Points 597

Ruby :

puts %"Hello, World!" || "!dlroW ,olleH"% stup

9voto

Brian Campbell Points 101107
"Hello, World" || "dlroW ,olleH"

Il s'agit d'une variation encore plus courte de plusieurs autres que nous avons déjà vues. Ce qui est intéressant dans cette variante, c'est qu'elle fonctionne dans plusieurs langues, en fonction de votre interprétation des règles (si les citations peuvent être imprimées ou non) :

Javascript, tel qu'exécuté dans l'interpréteur Spidermonkey :

$ js
js> "Hello, World" || "dlroW ,olleH"
Hello, World

Ruby :

$ irb
irb(main):001:0> "Hello, World" || "dlroW ,olleH"
=> "Hello, world"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X