Palindrome Bonjour, Monde

29

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.

lirtosiast
la source
Cela ne semble pas être "bonjour le monde".
Erik the Outgolfer
4
@ ΈρικΚωνσταντόπουλος C'est la même chose que Hello World à toutes fins utiles. Le but est d'imprimer une chaîne courte composée de deux mots avec la ponctuation courante dans les programmes Hello World. Hormis les fonctions intégrées qui impriment Hello World, les solutions seront absolument identiques (à l'exception de la chaîne réelle) quelle que soit la chaîne réelle imprimée. (Et je suppose que l'expression "Salutations, planète!" A été choisie spécifiquement pour rendre les éléments internes inutiles.)
Martin Ender
1
@ MartinBüttner Je pense que Hello, world!et Hello World!sont les seules sorties autorisées pour un monde de bonjour programme.
Erik the Outgolfer

Réponses:

33

/// , 37 octets

Greetings, Planet!/!tenalP ,sgniteerG
Dennis
la source
10
Ça va être difficile à battre.
PhiNotPi
16

TI-BASIC, 67 octets

"!tenalP ,sgniteerG"
"Greetings, Planet!"

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 :

"!TENALP ,SGNITEERG"
"GREETINGS, PLANET!"
NinjaBearMonkey
la source
Pouvez-vous utiliser eet i(les nombres) pour réduire davantage le nombre d'octets?
Addison Crump
1
@VTCAKAVSMoACE J'ai considéré cela, mais ils sont en italique, donc ils ont l'air légèrement différents.
NinjaBearMonkey
Pour être clair, la première ligne n'est pas un commentaire, elle est stockée dans la variable de réponse.
Julian Lachniet
12

Je sais que c'est un peu tard (et un peu capricieux), mais ...

> <> (Fish), 47 45 47 Bytes (vraiment 43 45, si je n'utilisais pas la direction aléatoire)

x"!tenalP ,sgniteerG"!|o|!"Greetings, Planet!"x

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 vers o.

  • 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)

x"!tenalP ,sgniteerG"!;oooooooooooooooooo;!"Greetings, Planet!"x

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.

Addison Crump
la source
Je pense que vous devriez appeler le langage> <> pour le distinguer de la coquille de poisson
Aaron
@Aaron On suppose généralement que poisson signifie ici> <>, mais j'ai déjà rencontré ce problème - je vais l'ajouter. Merci!
Addison Crump
comme je suppose, il est imprévisible que le code complet soit excuté ou non. Que se passe-t-il si le compteur de programme est bloqué entre deux instructions de direction aléatoire, ou simplement bloqué à l'une des instructions de direction aléatoire, par exemple, il baisse, atteint le bas, revient à cette instruction et recommence à zéro?
@GLASSIC Le programme ne sortira qu'une seule fois et le code entier ne sera jamais exécuté.
Addison Crump
11

Bubblegum , 38 octets

0000000: 73 2f 4a 4d 2d c9 cc 4b 2f d6 51 08 c8 49 cc 4b 2d 51 04  s/JM-..K/.Q..I.K-Q.
0000013: 04 51 2d 4b cc 49 c8 08 51 d6 2f 4b cc c9 2d 4d 4a 2f 73  .Q-K.I..Q./K..-MJ/s
Dennis
la source
10

Macaroni 0.0.2 , 52 octets

print "Greetings, Planet!""!tenalP ,sgniteerG" tnirp

Une solution qui n'utilise pas de commentaires. (Surtout parce que Macaroni n'a pas de commentaires ...)

Poignée de porte
la source
15
Macaroni n'a pas de commentaires? ಠ_ಠ
Alex A.
8

CJam, 41 octets

Merci à Dennis pour les trois octets.

"!tenalP ,sgniteerG";"Greetings, Planet!"
The_Basset_Hound
la source
2
Vous devez retourner les chaînes. En ce moment, vous sortez la bonne sortie et imprimez celle inversée.
NinjaBearMonkey du
@NinjaBearMonkey Whoops. Fixation.
The_Basset_Hound
Fonctionne également dans GolfScript.
Ilmari Karonen
7

Foo, 39 octets

"Greetings, Planet!"!tenalP ,sgniteerG"

Essayez-le en ligne.

un spaghetto
la source
!tenalP ,sgniteerG"Greetings, Planet!enregistre quelques octets.
Dennis
6

JavaScript, 56 octets

Cela peut fonctionner dans n'importe quel navigateur.

alert("Greetings, Planet!")//)"!tenalP ,sgniteerG"(trela
Downgoat
la source
Remplaçant print/tnirppar alert/trela, il fonctionne également avec d'autres moteurs.
ETHproductions
@ETHproductions ne peut pas croire que je n'y ai pas pensé, merci!
Downgoat
@jrich, vous avez raison, alert`Greetings, Planet!`//`!tenalP ,sgniteerG`trela52 octets
Aᴄʜᴇʀᴏɴғᴀɪʟ
5

GolfScript, 41 octets

"Greetings, Planet!":"!tenalP ,sgniteerG"

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.

"Greetings, Planet!":"!tenalP ,sgniteerG"
"!tenalP ,sgniteerG"

imprimerait

Greetings, Planet!Greetings, Planet!
Dennis
la source
5

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.

/**/
#include<cstdio>
int main(){puts("Greetings Planet!");}//*/
/*//};)"!tenalP sgniteerG"(stup{)(niam tni
>oidtsc<edulcni#
/**/
Luc
la source
5

Python 3, 57 octets

print('Greetings, Planet!')#)'!tenalP ,sgniteerG'(tnirp

J'ai résolu le problème avec des parenthèses.

Python 2, 53 octets

print'Greetings, Planet!'#'!tenalP ,sgniteerG'tnirp

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.

Noomann
la source
5

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.

»1ị“RsẈḄ,#ʠU“Uʠ#,ḄẈsR“ị1»

Écoute, pas de commentaires! Essayez-le en ligne!

Comment ça marche

»1ị“RsẈḄ,#ʠU“Uʠ#,ḄẈsR“ị1»  Main link. No arguments.

   “        “        “  »  Decompress all three strings; yield a list of strings.
    RsẈḄ,#ʠU               (decompresses to 'Greetings, Planet!')
             Uʠ#,ḄẈsR      (decompresses to ' WafdkmC Posited,')
                      ị1   (decompresses to 'Taarhus')

»1                         Take the maximum of the default argument (0) and 1.
  ị                        Select the string at the index to the left.
Dennis
la source
4

Bloqué , 41 octets

"Greetings, Planet!"p"!tenalP ,sgniteerG"

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.

Kade
la source
3

Mathematica, 52 octets

Print@"Greetings, Planet!""!tenalP ,sgniteerG"@tnirP

Génère également un Null "!tenalP ,sgniteerG"[tnirP]qui ne sera pas imprimé.

LegionMammal978
la source
1
Pour info, beaucoup de vos réponses (celle-ci incluse) ont été lancées dans la file d'attente de faible qualité car elles sont uniquement un titre / score et un code. Bien qu'il n'y ait rien de mal à cela, vous pouvez envisager d'ajouter plus de texte (comme une explication) afin qu'ils ne soient pas marqués automatiquement.
Mego
@Mego D'accord, je pensais qu'ils étaient assez explicites.
LegionMammal978
1
Je ne dis pas que l'absence d'explication est une mauvaise chose (bien que les réponses avec des explications aient tendance à obtenir plus de votes positifs), je vous fais juste savoir que vos réponses (valides) étaient automatiquement signalées en raison de leur longueur. :)
Mego
2
vous pouvez enregistrer 2 octets avec Echoin v10.3.
shrx
3

Fission , 45 43 octets

Merci à jimmy23013 pour avoir économisé 2 octets.

;"!tenalP ,sgniteerG"R"Greetings, Planet!";

Essayez-le en ligne!

Rinitialise 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.

Martin Ender
la source
@ jimmy23013 Je n'ai aucune idée, pour être honnête. Merci.
Martin Ender
3

05AB1E , 16 octets

Code:

”!º¥,ÁÙ””ÙÁ,¥º!”

Explication:

”!º¥,ÁÙ”          # Compressed string which results in "! Crm, Everywhere".
        ”ÙÁ,¥º!”  # Compressed string which results in "Greetings, Planet!".
                  # Top of stack is implicitly outputted.

Essayez-le en ligne!

Adnan
la source
2

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
di "Greetings, Planet!";"!tenalP ,sgniteerG" id
d#

#d [something]change le délimiteur (initialement un retour chariot) à ;moins que [quelque chose] ne soit cr, 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.

bmarks
la source
2

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.

`!t?ÓP ,?Ä>ÎG`;`GÎ>Ä?, PÓ?t!`

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.

ETHproductions
la source
2

APL, 41 octets

'Greetings, Planet!'⍝'!tenalP ,sgniteerG'

En APL, la dernière valeur est imprimée et le caractère de la lampe (⍝) commence un commentaire.

TuxCrafting
la source
Bonjour et bienvenue chez PPCG! Très bonne réponse!
NoOneIsHere
2

GolfScript , 41 octets

"Greetings, Planet!"#"!tenalP ,sgniteerG"

Essayez-le en ligne!

Lordmusic Player
la source
@muddyfish Edited. Maintenant, c'est un palindrome. Désolé.
Lordmusic Player
2

TCL, 80 octets

proc unknown args {puts "Hello World!"}
}"!dlroW olleH" stup{ sgra nwonknu corp

explication: TCL exécute un proc global unknownquand 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, nwonknuet corp. Aucune commande nommée }"!dlroW olleH"n'a été définie, donc le undefinedproc 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.

SingleNegationElimination
la source
1

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.

"! tenalP, sgniteerG" Z "Salutations, Planet!"

Le Zpersonnage sort tout dans la pile vers STDOUT.

Essayez-le en ligne!

Addison Crump
la source
1

Unfunge 98 - 49 octets

"!tenalP ,sgniteerG<DC1>"k,@,k"<DC1>Greetings, Planet!"

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>.

pppery
la source
1

MSM , 73 octets

GGreetings, Planet!.................,.................!tenalP ,sgniteerGG

La première moitié juste avant le milieu ,crée une chaîne de salutation inversée, y compris la chaîne supplémentaire Gà 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 le s. Les deux ,et ont sbesoin d'un remplacement pour les points de concaténation gauche, d'où le Gs. Le ,côté droit n'est pas exécuté, mais intégré à la chaîne finale.

nimi
la source
1

CoffeeScript, 53 octets

Semblable à Ruby et Lua et à peu près toutes les variantes ici.

alert 'Greetings, Planet!'#'!tenalP ,sgniteerG' trela
rink.attendant.6
la source
1

Rubis, 43 octets

p"Greetings, Planet!"#"!tenalP ,sgniteerG"p
Fève de cacao
la source
1

Bash, 52 48 octets

echo Greetings, Planet!||!tenalP ,sgniteerG ohce

Fonctionne également en ksh, zsh, yash, dash. Mais pas tcsh.

$ cat x.sh
echo Greetings, Planet!||!tenalP ,sgniteerG ohce
$ bash x.sh
Greetings, Planet!
$ ksh x.sh
Greetings, Planet!
$ zsh x.sh
Greetings, Planet!
$ yash x.sh
Greetings, Planet!
$ dash x.sh
Greetings, Planet!
$ tcsh x.sh
tenalP: Event not found.
$
Steve
la source
1
Supprimez toutes les citations.
manatwork
1
Oh mon cher, une réponse bash était plus courte que python = /. Retour à la planche à dessin!
Ashwin Gupta
1

Lua, 52 octets

print"Greetings, Planet!"--"!tenalP ,sgniteerG"tnirp

Dans le terminal Lua, il n'y a que 44 octets avec

="Greetings, Planet!"--"!tenalP ,sgniteerG"=
Digital Veer
la source
Ma faute. Merci pour l'alerte!
Digital Veer
Supprimez toutes les parenthèses. Pour les fonctions avec un seul paramètre de chaîne, elles sont facultatives.
manatwork
Lua 5.3 ne nécessite pas =de terminal, il est donc à 2 octets. Je pense que cela existait en 2015, je n'en suis pas sûr.
val dit Réintégrer Monica
1

Voie lactée 1.5.10 , 43 41 39 octets

"Greetings, Planet!"!tenalP ,sgniteerG"

Explication

"Greetings, Planet!"                       # push the string to the stack
                    !                      # output the TOS
                     tenalP ,sgniteerG"    # throws an error and exits

Usage

python3 milkyway.py <path-to-code>
Zach Gates
la source
Aviez-vous vraiment besoin d'un commentaire? S'il s'agit d'une pile (sans sortie implicite), alors la sortie de la pile devrait fonctionner.
Addison Crump
Tu as raison! Merci. @FlagAsSpam
Zach Gates