Un palindrome est une chaîne qui est la même en avant et en arrière, comme "racecar".
Écrivez un programme dans une langue L, qui prend tout programme P1 dans la langue L comme entrée, et génère un programme palindromique P2 dans la langue L qui fait la même chose que P1.
Vous n'avez pas à vous soucier de la gestion des programmes d'entrée avec des erreurs de syntaxe.
C'est le golf de code , donc la solution avec le moins d'octets gagne.
code-golf
palindrome
Peter Olson
la source
la source
x=input();print(x+'#'+x[::-1])
. Le sous-ensemble est l'ensemble de tous les programmes qui n'incluent pas de sauts de ligne.Réponses:
Perl,
5554 octetsLit la source du programme depuis stdin et écrit dans stdout.
Résultat du fonctionnement sur lui-même:
la source
__DATA__
qui est lu .. par exemple.print while(<DATA>);\n__DATA__
va changer le comportement.__DATA__
. :)Java, 225 octets
Sortie sur elle-même (lorsqu'elle a été préalablement optimisée):
la source
Python 2, 68 octets
Ne fonctionne pas si exécuté à partir de IDLE, car vous devez générer un caractère EOF pour empêcher le programme d'attendre l'entrée.
Sortie lorsqu'il est exécuté sur lui-même:
Merci à Greg Hewgill d'avoir aidé à résoudre les problèmes et à jouer au golf.
la source
GolfScript,
109 octetsAssez similaire à la solution de minitech , mais elle fonctionne bien avec les nouvelles lignes. Il s'appuie sur le comportement drôle (et non documenté) de GolfScript pour ignorer un élément inégalé (et non commenté)
}
, ainsi que tout ce qui le suit.Il échouera si l'entrée contient une valeur inégalée
{
, mais cela constituerait techniquement une erreur de syntaxe.Comment ça fonctionne
Exemple
la source
1\n2#
(ce\n
serait un caractère de nouvelle ligne) comme entrée.code machine x86 sous DOS (
.com
fichier) - 70 octetsGérer les fichiers .COM, créer un palyndrome est facile - puisque le "chargeur" COM met simplement le contenu du fichier à l'adresse
100h
et y saute, le programme doit déjà coder en dur sa fin en quelque sorte et ignorer tout ce qui se trouve après, donc nous pouvons simplement ajouter l'inverse des N-1 premiers octets (seule mise en garde: si le programme essaie en quelque sorte de faire des tours avec la longueur du fichier, tout se casse).Voici le vidage hexadécimal de mon
.COM
-palyndromizing.COM
:Il prend le fichier d'entrée sur la ligne de commande et écrit la sortie sur stdout; l'utilisation attendue est quelque chose comme
compalyn source.com > out.com
.Montage commenté:
Testé sur lui-même et les solutions à une question précédente semblent bien fonctionner dans DosBox, quelques tests plus approfondis sur les exécutables DOS "canoniques" suivront.
la source
GolfScript, 8
Ne gère pas les sauts de ligne, mais personne ne les utilise dans GolfScript.
la source
Bash + coreutils, 39 octets
Lit depuis STDIN et sort vers STDOUT:
la source
( echo 'Hello, World!' )
. bash ignore à peu près tout après leexit
.Javascript ( ES6 ) multiligne - 71
Sorta sorta volé la méthode de commentaire de Quincunx ici:
Ligne unique - 49
la source
C ++,
214209 octetsRésultat du fonctionnement sur lui-même:
la source
Brainfuck, 749 sans espace (pas de golf)
Cela produit des programmes de brainfuck qui reflétaient des palindromes, c'est-à-dire qu'ils sont des images miroir d'eux-mêmes.
Étant donné un programme qu'il génère
avec
PROGRAM
etMIRROR
remplacé par le programme (sans personnages non-brainfuck) et son image miroir.la source
C 168
175Gère correctement la nouvelle ligne échappée dans le code source
Modifier 1 bug fixe lorsque la dernière nouvelle ligne est manquante
Modifier 2 bug fixe lorsque la ligne à l'intérieur du commentaire se termine par
*
: ajoutez un caractère de tabulation avant le//
commentaire(et jouez plus)
C99 Standard, code valide, nombreux avertissements
Non golfé
la source
/* *<NL> */int main(){}
C # - 174
Entrée de test:
Sortie de test:
la source
//
Cependant, votre sortie de test devrait avoir la fin de chaque ligne.PHP, 96 octets
Exemple d'utilisation:
Ce n'est rien d'intelligent. C'est juste un simple morceau de code qui fait le travail ... J'étais d'humeur à jouer. Je sais que ce code regorge de mauvaises pratiques de programmation!
Enfin, j'accepterai volontiers toute critique et modification de ce code!
la source
Cobra - 134
la source
Raquette 133
Non golfé (mais toujours très impératif):
Sortie lorsque la version non golfée est entrée:
la source