Créez un programme qui convertit la chaîne d'entrée en un palindrome commençant par la chaîne d'entrée. Le programme lui-même doit être un palindrome.
Par exemple, saisissez neverod
:, imprimez neveroddoreven
. Vous devez également gérer les entrées multi-mots et multi-lignes.
neverod
->neverodadoreven
(avec l'a
intervalle)Réponses:
Dyalog APL,
64Essayez-le ici.
Autres solutions:
Explication
Ce ne sont que:
Monadic
,
et⊢
ne fait rien sur les cordes. Dyadique,
est concaténation. Dyadic⊢
retourne son opérande droit. Et⌽
c'est évidemment la réversion.la source
piet 19x2 = 38
Accepte l'entrée jusqu'à ce qu'elle rencontre 0x00. Ne se termine pas, mais la sortie sera correcte.
la source
APL, 9
Explication:
la source
CJam, 13 octets
Essayez-le en ligne ici
ou..
GolfScript, 9 octets
Essayez-le ici
la source
#
commentaire ordinaire fonctionnerait aussi bien là-bas.}
est connu pour être un super commentaire depuis des lustres :)C ++, 162 octets
C, 117 octets
la source
Haskell, 102 + 22 = 124 octets
Cela doit être exécuté avec le
Control.Applicative
module dans la portée, qui peut être défini via le fichier d'initialisation ghci.ghci
::m Control.Applicative
(-> +22 octets).Pas de truc de commentaire, juste 7 fonctions dont 4 ne sont jamais appelées.
Si des fonctions (au lieu de programmes) sont autorisées:
Haskell, 55 + 22 = 77 octets
Utilisation
f "qwer"
->"qwerrewq"
Edit: la version précédente était juste fausse.
la source
Pyth, 11 octets
En Pyth, tout ce qui précède avec un espace n'est pas imprimé. Donc, nous ajoutons simplement le négatif de la chaîne à lui-même, mettons un espace, commençons une chaîne et reflétons le côté gauche de la citation "
Essayez-le en ligne ici
la source
Rubis, 44
Prend une chaîne multiligne en entrée de stdin, génère une représentation Ruby de cette chaîne concaténée à son inverse. Pourrait couper un caractère en le remplaçant
||
par#
pour mettre en commentaire le code mort sur la deuxième ligne.la source
s=gets p
! =p steg=s
Jolf, 9 octets
Langue plus récente, non concurrente
Essayez ici
Explication: je viens de commencer Jolf et je ne pense pas que j'explique cela correctement.
la source
η
la solution, très bien faite. Vous pouvez enregistrer deux octets en éliminant les mu, comme:a+i_i+a
. (Jolf a également une entrée implicite pour remplir le reste des arguments, mais ce n'est pas un problème car une seule entrée est donnée à la fois.) Je garderais toujours votre solution d'origine dans la réponse.PowerShell, 67
Essayez-le en ligne
Comme suggéré par @mazzy, le code peut être raccourci de 12 octets lors de l'utilisation d'une plage statique. Cependant, cela limite la longueur d'entrée à 9 Ko. Théoriquement, 9 Mo seraient possibles, mais cela ralentirait considérablement le code.
la source
param($s)$s+-join$s[$s.Length..0]#]0..htgneL.s$[s$nioj-+s$)s$(marap
$args|%{$_+-join$_[9Kb..0]}#}]0..bK9[_$nioj-+_${%|sgra$
(55 octets)Octo Guacamole flou, 17 octets
Le brouillard est plus récent que ce défi, il ne s'agit donc pas d'une compétition.
Solution alternative en 19 octets:
Ils prennent tous deux en entrée, dupliquent et inversent, et rejoignent la pile.
Explication:
la source
tinyBF , 40
Ma première pensée a été Brainfuck, mais il est impossible de faire correspondre les accolades ... heureusement, tinyBF a un contrôle de flux plus simple.
Aucun commentaire, il prend en entrée une chaîne terminée par null et renvoie le résultat dans une chaîne terminée par null. Vous pouvez le tester ici , sachez simplement qu'il ne s'arrête pas (bien que Firefox invite au moins à arrêter le script qui ne répond pas).
Commenté:
Notez que si vous le codez en instructions 2 bits, il réduit la taille à 10 octets (ce ne serait pas un palindrome).
la source
Python 3, 59 octets
J'ai fait de mon mieux pour trouver une solution qui n'utilisait qu'une seule ligne mais je n'ai pas eu de chance.
Python 3, 79 octets
Ma tentative originale dans laquelle chaque ligne est un palindrome. Je ne pense pas que ce soit nécessaire pour ce défi, mais je l'ai inclus juste au cas où.
la source
lambda
c'est si long):print((lambda a:a+a[::-1])(input()))#)))(tupni()]1-::[a+a:a adbmal((tnirp
Vitsy, 9 octets
Essayez-le en ligne!
la source
Befunge , 37 octets
Essayez-le en ligne!
La ligne supérieure pousse et imprime chaque caractère d'entrée. La deuxième ligne (avant le
@
) imprime la pile en sens inverse, mais nous entrons au contional_
pour consommer le -1 généré à la fin de la lecture de l'entrée. L'autre moitié du code (y compris ces tristes nouvelles lignes laides) fait de la source un palindrome, mais ne fonctionne jamais.la source
C # (
3332 + 1) * 2 =6866 octetsenregistré 2 octets à l'utilisation de .Aggregate ()
Oh le bon vieux lambda, tu peux l'attraper avec
puis appelez-le avec
la source
Perl, 45 octets
Assez simple, c'est
print
l'entrée ($_=<>
) suivie de cellereverse
-ci.reverse
renvoie$_
parce que nous l'utilisons dans un contexte scalaire en préfixant avec~~
. Ensuite, nous comparons (enm//
utilisant;
comme délimiteur), dans un contexte vide, contre l'inverse du script.Si nous pouvons garantir nous n'aurons pas à créer un palindrome de
esrever,><=_$tnirp
nous pouvons raccourcir le code à 43 octets :Usage
Perl, 26 octets
Comprend un code de 25 octets + 1 pour
-p
.Je ne pense pas que cela soit valide car il nécessite le
-p
drapeau qui, je pense, ne peut pas être facilement combiné dans le contenu du script pour faire un vrai palindrome. À peu près les mêmes appels que ci-dessus, sauf qu'il repose sur le fait qu'il-p
ajoute également un;
arrière-plan (sur les Perls plus récents ...) pour fermer lem//
.Usage
la source
Pyth, 15
Remarquez l'espace au début et à la fin.
Tâche assez ennuyeuse en Pyth.
z_z
imprime le palindrome souhaité, mais il imprimez
(la chaîne d'entrée) et_z
l'inverse sur deux lignes différentes.+
combine les deux mots, mais+
à la fin nécessite deux nouvelles déclarations à la fin (et au début). Je choisisk
etk
, qui ne sont que des chaînes vides. Ensuite, beaucoup d'espace blanc, ce qui supprime l'impression (et l'impression d'espaces vides, qui génèrent bien sûr des sauts de ligne).Étant donné que l'espace blanc supprime toutes les sorties à l'exception de la
+z_z
, vous pouvez remplacer lek
s et le littéral par l'arité 0. Par exemple,1 2+ z_z +2 1
ouT Z+ z_z +Z T
.Essayez-le en ligne .
la source
Javascript, 137 octets
Je n'utilise pas la "astuce de commentaire" mais j'utilise l'astuce de guillemets échappés lol.
la source
";
. L'ajout d'un;
dernier caractère dans la chaîne devrait résoudre ce problème.JavaScript, 58 octets
la source
PHP, 28 + 1 + 28 = 57 octets
prend l'entrée de l'argument de ligne de commande. devis pour plusieurs mots, échapper aux nouvelles lignes pour plusieurs lignes.
la source
Python 2, 51 octets
Je suis surpris que personne n'y ait pensé! Nécessite une entrée citée (
'
ou"
). Si les fonctions avaient été autorisées, j'aurais pu le faire pour 37 octets à la place:la source
C ++ 14,
152116 octetsEn tant que lambda sans nom, suppose
s
êtrestring
Ancienne solution:
Usage:
la source
05AB1E , 5 octets
Essayez-le en ligne.
Explication:
Ou bien:
Essayez-le en ligne.
Où
R
est inversé, et«
prend à nouveau implicitement l'entrée pour concaténer.REMARQUE: Si nous sommes autorisés à sortir
neverodoreven
pour l'entréeneverod
, qui est toujours un palindrome, cela peut être fait en 1 octet à la place avec le palindromize intégré:Essayez-le en ligne.
la source
Assemblage x86-64 (convention d'appel Microsoft x64), 89 octets:
Démonté:
Notez que le code après l'
ret
instruction à2C
est inaccessible, donc peu importe que ce soit un non-sensla source
Japt , 4 octets
Essayez-le en ligne!
Comment ça marche
Alternative 4 octets
Essayez-le en ligne!
Comment ça marche
la source
Revers ,
3327 octetsEssayez-le en ligne!
Contrairement à beaucoup de solutions ici, celle-ci fait ne n'utiliser le code palindromised!
Explication:
Au total, les instructions non exécutées sont:
la source