Ecrivez un programme court pour 196 algorithmes . L'algorithme commence à un entier, puis ajoute son inverse jusqu'à atteindre un palindrome.
par exemple
input = 5280
5280 + 0825 = 6105
6105 + 5016 = 11121
11121 + 12111 = 23232
output = 23232
Contribution
un entier, qui n'est pas un nombre de lyrchrel (c'est-à-dire qu'il finit par donner un palindrome sous cet algorithme, plutôt que de continuer indéfiniment)
Sortie
le palindrome atteint.
code-golf
palindrome
Eelvex
la source
la source
Réponses:
APL (22 caractères)
Cela fonctionne dans Dyalog APL. Voici une explication, de droite à gauche:
{ ... }⍞
: Récupère les entrées de l'utilisateur sous forme de caractères (⍞
) et les envoie à notre fonction ({ ... }
).⋄
instructions séparées, nous les regardons de gauche à droite):a≡⌽a←⍕(⍎⍵)+⍎⌽⍵ : a
: Evaluate (⍎
) l'argument de droite (⍵
) reverse (⌽
), et l'ajoute à la version évaluée de l'argument de droite lui-même. Ensuite, formatez le résultat (⍕
; c’est-à-dire donnez la représentation de son caractère), attribuez (←
) celle à la variablea
, et enfin, testez sia
l’inverse est équivalent àa
(c’est- à -dire qu’il s’agit d’a
un palindrome?). Si cela est vrai, retourneza
; autrement...∇a
: Feeda
back dans notre fonction (∇
est auto-référence implicite).Exemple:
la source
{⍵=A←⍎⌽⍕⍵:⍵⋄∇A+⍵}⎕
. Vous enregistrez les accolades, une inversion et une évaluation.GolfScript, 29 caractères
Commentaire sélectionné
La viande du programme est la
do
boucle, bien sûr. Donc, je vais juste couvrir cela..`
copie le nombre et le stratifié..-1%
copie cette version de chaîne et l’inverse..@
copie la version inversée et place la version originale non inversée au premier plan.Ainsi, par exemple, le nombre est 5280. A ce stade, la pile est:
5280 "0825" "0825" "5280"
. La scène est prête pour la comparaison. (Après la comparaison, la pile sera laissée à5280 "0825"
n'importe quoi --- les éléments à comparer ont été supprimés.);
) et de renvoyer 0 (pour terminer lado
boucle).~
) la chaîne inversée (pour en faire un nombre), ajoutez (+
) celle-ci au nombre d'origine et renvoyez 1 (pour continuer lado
boucle).la source
Python 2, 55 octets
Suite à la suggestion de JPvdMerwe:
Python 2, 62:
la source
n
comme un int, vous pouvez raccourcir de 6 caractères, vérifiez le code: meta.codegolf.stackexchange.com/q/75/62Ruby - 56 caractères
la source
Juste exercer mes compétences en Pyth, pas un concurrent sérieux.
Pyth, 16 octets
Équivalent à Python 3:
la source
J 25
2731la source
CJam,
2221 octetsCJam a été créé après que cette question a été posée, donc techniquement, c'est une soumission invalide. Mais j'ai trouvé la question intéressante, alors voici:
Explication:
La logique de base est que dans chaque itération while-do, vous vérifiez d'abord si le palindrome est atteint ou non. Sinon, ajoutez l'inverse au numéro. Quasiment ce que l'algorithme est!
Essayez-le en ligne ici
la source
C’est un véritable prétendant, puisque J existe depuis des décennies.
J (16 octets)
Ceci est un verbe, il peut donc être assigné à une variable dans une session J et utilisé comme ceci:
Comment ça marche:
la source
Python: 66
la source
Perl, 40 caractères
la source
Scala 82
la source
JAGL Alpha 1.2 - 19, 21 avec stdin
Ne pas se disputer , juste acquérir de l'expérience avec ma langue
Attend un numéro de stdin
Explication
la source
05AB1E , 7 octets (non concurrents)
Non compétitif , car la langue post-date le défi.
Code:
Explication:
Utilise le codage CP-1252 . Essayez-le en ligne! .
la source
hello
. La bifurcation conservera la chaîne d'origine et la inversera. C'est court pour dupliquer et inverser .Brachylog , 8 octets
Essayez-le en ligne!
Un peu similaire à l'un des premiers programmes Brachylog que j'ai vus et qui m'a intrigué, à partir de la vidéo d'introduction de Brachylog .
la source
PHP -
5448 caractèresTester:
la source
$str =
truc du chat pour le golf futur. Zut beaucoup mieux que d'utiliserSTDIN
et encore mieux que$argv[0]
.Bash (64)
Appelez avec: bash <nomfichier> <numéro>
la source
C # -
10399 caractèresC # ne fait jamais très bien dans le golf. Élégant, mais prolixe.
la source
En Q (39 caractères)
Exemple d'utilisation:
Modifier:
Jusqu'à 34 maintenant, même utilisation:
la source
la source
Gelée , 9 octets (non en compétition)
Une réponse très simple, juste pour le défi de coder en langage ésotérique.
ṚḌ+µŒḂ¬$¿
Essayez-le en ligne!
Si cette réponse n’est pas claire ou erronée à quelque niveau que ce soit, n’hésitez pas à la signaler.
Merci à Dennis de m'avoir aidé avec ce premier petit code.
la source
Python. 85 caractères:
Si vous ne voulez pas de sortie à chaque itération:
(un personnage de moins)
la source
Windows PowerShell (63)
Je déteste toujours qu'il n'y a pas de moyen facile d'inverser une chaîne.
la source
long
le plus grand support intégral de type PowerShell de toute façon est sûr, mais j’ai quand même perdu deux caractères.Haskell
8987 caractèresVersion assez lisible:
La version golfée a été créée manuellement en ajoutant et en renommant les fonctions restantes en noms à un seul caractère.
la source
until
de Prelude et en extrayant le motif d'application d'un opérateur binaire àx
etr x
. En outre, utilisez à lareadLn
place degetLine
etread
. Le résultat sauve 20 caractères:f%x=f x$read.reverse.show$x;main=readLn>>=print.until((==)%)((+)%)
r=(=<<read.reverse.show)
et simplement utiliserr(==)`until`r(+)
. En dehors de cette sauvegarde, il n’est pas nécessaire que ce soit un programme complet, une soumission valide pourrait tout simplement être la fonction non nommée d’avant. Cela vous ramène à 41 octets: essayez-le en ligne!befunge, 57 bytes
bien que le code soit placé dans une grille 4x19, appelez-le 76.
la source
TMP C ++ (256 caractères)
Cette version pourrait être un peu raccourcie, mais il est difficile de laisser passer une réponse de 256 caractères. Voici une version non-golfée:
la source
Pyke, 13 octets (sans compétition)
Essayez-le ici!
la source
Ajouter ++ , 57 octets
Essayez-le en ligne!
Comment ça marche
la source
Powershell,
6362 octets-1 octet grâce à @AdmBorkBork
Script de test:
la source
;
entreparam($m)
etfor
.GNU dc, 46 octets
Nécessite GNU dc, version min 1.4 (pour la
R
commande).L'entrée et la sortie sont en haut de la pile, comme d'habitude. Il faut une quantité surprenante de code pour inverser les chiffres en courant continu (à moins que quelque chose ne me manque, ce qui est loin d'être impossible). Il a la plage numérique pour bien se comporter avec des entrées telles que celles-ci (qui débordent l'arithmétique 32 bits non signée, par exemple):
Explication
la source
R
commande. Bonne solution quand même!R
c'était nouveau. Au plaisir de voir votre méthode!R ,
193109105 octets-84 octets grâce à Giuseppe! -4 byes grâce à JayCe!
Essayez-le en ligne!
la source
strsplit(x,"")
plus courte questrsplit(x,NULL)
, etel(L)
plus courte queL[[1]]
.as.double
est plus court queas.numeric
etstrtoi
est plus court que les deux; au lieu de le définir,t
utilisez-le directement dans votreif
relevé. de plus, c'est une fonction récursive si je ne me trompe pas, vous devez donc l'insérerf=
dans votre soumission.utf8ToInt
de convertir en chiffres etintToUtf8
de reconvertir. Ce sera une grande économie d'octets!while
boucle-
à la place deU
. J'ai aussi remplacérev
par!
mais cela ne sauve aucun octet ...