Votre tâche consiste à créer un programme qui imprime "Salutations, planète!" exactement à la console. Semble assez simple, non? Eh bien, voici l'astuce. Le code doit être un palindrome, ce qui signifie qu'il se lit de droite à gauche de la même manière que de gauche à droite. Les failles standard ne sont PAS autorisées.
code-golf
restricted-source
hello-world
palindrome
lirtosiast
la source
la source
Hello, world!
etHello World!
sont les seules sorties autorisées pour un monde de bonjour programme.Réponses:
/// , 37 octets
la source
TI-BASIC, 67 octets
Cela fonctionne car la dernière ligne d'un programme est affichée à l'écran, tandis que la première chaîne est essentiellement traitée comme un commentaire.
Chaque lettre minuscule est stockée sur 2 octets et les caractères restants font 1 octet. Si je devais contourner les règles et imprimer en toutes majuscules, ce serait 41 octets :
la source
e
eti
(les nombres) pour réduire davantage le nombre d'octets?Je sais que c'est un peu tard (et un peu capricieux), mais ...
> <> (Fish),
474547 Bytes (vraiment4345, si je n'utilisais pas la direction aléatoire)Ces réponses sont un peu différentes les unes des autres; il est possible que l'une ou l'autre direction du code soit exécutée.
Donc, en "imprimant sur console", j'ai supposé que vous vouliez dire imprimer sur stdout. Cela jette une erreur; l'erreur est renvoyée à stderr APRÈS que la chaîne soit imprimée sur stdout.
Pour prouver que cela fonctionnait dans les deux sens, j'ai utilisé le directeur "direction aléatoire", "x". Le poisson est un langage à deux dimensions, donc, quel que soit le sens du directeur, le code sera toujours (éventuellement) exécuté.
En supposant que le premier directeur pointe vers la droite, les caractères sont chargés dans la "pile" dans l'ordre inverse, puis l'inverse de l'inverse (ou le texte normal) est imprimé.
En supposant que les deux directeurs pointent vers la gauche, les caractères sont, une fois de plus, chargés dans la "pile" dans l'ordre inverse (parce que le code le charge à l'envers ici, la direction est à gauche), puis l'inverse de l'inverse (ou le texte normal) est imprimé.
Si le directeur randomisé pointe vers le haut ou vers le bas, cela n'aura pas d'importance - le poisson sait faire une boucle vers le dessous ou le dessus du code, pointant vers le randomiseur. De cette façon, il continuera à boucler avec les randomiseurs jusqu'à ce qu'il pointe vers l'intérieur, vers le code à exécuter.
Le
!|o|!
bit fait ce qui suit, des deux côtés:!
saute l'instruction suivante (sautera toujours|
)|
est un réflecteur; il pointe vers l'intérieur verso
.o
renvoie l'élément actuel de la pile sur la console en tant que personnage et le supprime de la pile.Donc, essentiellement, c'est l'astuce "deux miroirs dans une salle de bain pressés ensemble", où je produis jusqu'à ce que je ne puisse plus.
Maintenant, en utilisant un emoji de chat.>o<
redirige la sortie vers l'intérieur à l'infini, lançant toujours l'erreur, mais je peux m'en tirer sans utiliser de saut en réflexion.Il s'avère que j'avais raison la première fois - la deuxième tentative n'était pas palindromique , mais elle était réfléchissante .
Poisson (sans imprimer sur stderr), 64 octets (ew)
Ce mec est un peu plus long.
Il a la même fonction de flèche aléatoire (pour prouver qu'il fonctionne dans les deux sens) et n'imprime pas sur stderr.
La différence ici est évidente; J'imprime littéralement chaque élément de la pile, puis je termine l'exécution avec
;
.L'
!;
exécution ne met pas fin immédiatement à l'exécution, car elle!
saute l'élément suivant (exécution finale, dans ce cas) et continue jusqu'à ce qu'elle touche l'autre côté, qui agit comme;!
, où elle termine l'exécution avant d'ignorer quoi que ce soit.Elle suit le même schéma de direction aléatoire que la réponse courte.
la source
Bubblegum , 38 octets
la source
Macaroni 0.0.2 , 52 octets
Une solution qui n'utilise pas de commentaires. (Surtout parce que Macaroni n'a pas de commentaires ...)
la source
CJam, 41 octets
Merci à Dennis pour les trois octets.
la source
Foo, 39 octets
Essayez-le en ligne.
la source
!tenalP ,sgniteerG"Greetings, Planet!
enregistre quelques octets.JavaScript, 56 octets
Cela peut fonctionner dans n'importe quel navigateur.
la source
print/tnirp
paralert/trela
, il fonctionne également avec d'autres moteurs.alert`Greetings, Planet!`//`!tenalP ,sgniteerG`trela
52 octetsGolfScript, 41 octets
Regardez ma, pas d'opération! Essayez-le en ligne dans Web GolfScript .
La seconde moitié du code source stocke la chaîne dans la deuxième chaîne.
imprimerait
la source
C ++, 129 octets
Essayer de le faire sans commentaires m'a conduit dans un cauchemar profond et sombre du préprocesseur sans aucune sortie que je pouvais voir. Au lieu de cela, je voulais juste que ce soit le plus court possible.
la source
Python 3, 57 octets
J'ai résolu le problème avec des parenthèses.
Python 2, 53 octets
J'ai utilisé l'avantage du manque de parenthèses et d'espaces requis dans Python 2, mais il n'y avait pas une grande différence.
la source
Gelée, non compétitive
25 octets Cette réponse n'est pas concurrente, car le défi est antérieur à la création de Jelly.
Écoute, pas de commentaires! Essayez-le en ligne!
Comment ça marche
la source
Bloqué , 41 octets
Assez similaire à la réponse CJam, sauf dans Stuck si une commande d'impression est émise, l'impression automatique de la pile est supprimée.
la source
Mathematica, 52 octets
Génère également un
Null "!tenalP ,sgniteerG"[tnirP]
qui ne sera pas imprimé.la source
Echo
inv10.3
.Fission ,
4543 octetsMerci à jimmy23013 pour avoir économisé 2 octets.
Essayez-le en ligne!
R
initialise un atome qui se déplace vers la droite."
bascule le mode chaîne qui imprime simplement la chaîne souhaitée sur STDOUT avant de frapper;
, ce qui détruit l'atome et termine le programme. La première moitié n'est tout simplement jamais exécutée.la source
05AB1E , 16 octets
Code:
Explication:
Essayez-le en ligne!
la source
STATA, 52 octets
di "Greetings, Planet!"//"!tenalP ,sgniteerG" id
Une version légèrement plus longue (53 octets) qui n'utilise pas de commentaires est:
#d [something]
change le délimiteur (initialement un retour chariot) à;
moins que [quelque chose] ne soitcr
, donc la première commande change le délimiteur en;
, la seconde imprime la chaîne, et la troisième (qui continue jusqu'à la fin) est apparemment un nop, bien que je n'ai pas idée pourquoi. J'aurais deviné que cela lancerait une erreur (commande non reconnue "! TenalP, sgniteerG" ou quelque chose), mais apparemment pas.la source
Japt , 29 octets
Ce langage de programmation a été créé après la publication de la question, mais n'a pas été créé pour cette question.
Essayez-le en ligne!
Chacun
?
est un caractère Unicode non imprimable: U + 0082, U + 000F, U + 000F et U + 0082, respectivement.Fait amusant: si Japt avait été publié un mois plus tôt, il aurait légitimement remporté ce défi.
la source
APL, 41 octets
En APL, la dernière valeur est imprimée et le caractère de la lampe (⍝) commence un commentaire.
la source
GolfScript , 41 octets
Essayez-le en ligne!
la source
TCL, 80 octets
explication: TCL exécute un proc global
unknown
quand il rencontre un appel à une commande non définie, la première ligne redéfinit ce proc en un simple programme "hello world".Les règles de citation de TCL sont assez subtiles, une accolade ouverte commence un mot entre guillemets qui s'étend jusqu'à l' accolade de fermeture correspondante suivante , permettant des mots imbriqués entre guillemets. Les accolades sont par ailleurs traitées comme des caractères normaux. cinq mots:
}"!dlroW olleH"
,stup{
,sgra
,nwonknu
etcorp
. Aucune commande nommée}"!dlroW olleH"
n'a été définie, donc leundefined
proc de la première ligne est appelé à la place.Une question similaire a été publiée sur le StackOverflow de l'antiquité; qui a depuis été fermé et supprimé. J'ai utilisé ma solution comme un échantillon TCL ironique dans cette réponse , et je reçois maintenant des commentaires demandant une explication, donc je recrée ma réponse ici.
la source
Keg , 41 octets
Essayez-le en ligne!
la source
Vitsy , 41 octets
Ce langage de programmation a été créé après la publication de la question, mais n'a pas été créé pour cette question.
Le
Z
personnage sort tout dans la pile vers STDOUT.Essayez-le en ligne!
la source
Unfunge 98 - 49 octets
Le code ci-dessus contient deux caractères non imprimables avec le code 17 (contrôle de périphérique 1) représenté par
<DC1>
.la source
MSM , 73 octets
La première moitié juste avant le milieu
,
crée une chaîne de salutation inversée, y compris la chaîne supplémentaireG
à droite. Le milieu le,
laisse tomber et le reste est un programme canonique "Bonjour / Salutation / peu importe". Les caractères supplémentaires aux deux extrémités sont nécessaires, car le message contient un,
. Celui de gauche est exécuté et laisse tomber les
. Les deux,
et onts
besoin d'un remplacement pour les points de concaténation gauche, d'où leG
s. Le,
côté droit n'est pas exécuté, mais intégré à la chaîne finale.la source
CoffeeScript, 53 octets
Semblable à Ruby et Lua et à peu près toutes les variantes ici.
la source
Rubis, 43 octets
la source
Bash,
5248 octetsFonctionne également en ksh, zsh, yash, dash. Mais pas tcsh.
la source
Lua, 52 octets
Dans le terminal Lua, il n'y a que 44 octets avec
la source
=
de terminal, il est donc à 2 octets. Je pense que cela existait en 2015, je n'en suis pas sûr.Voie lactée 1.5.10 ,
434139 octetsExplication
Usage
la source