La séquence inversée puis ajoutée (RTA) est une séquence obtenue en ajoutant un nombre à son inverse et en répétant le processus sur le résultat. Par exemple.,
Ainsi, la séquence RTA de 5 contient 10, 11, 22, 44, 88, 176, etc.
La racine RTA d'un nombre est le plus petit nombre égal à ou donnant lieu à dans sa séquence RTA.n n
Par exemple, 44 se trouve dans la séquence RTA de 5, 10, 11, 13, 22, 31, etc. Parmi ceux-ci, 5 est le plus petit, et donc RTAroot (44) = 5.
72 ne fait partie d'aucune séquence RTA d'aucun nombre, et est donc considéré comme sa propre racine RTA.
L'entrée est un entier positif dans une plage que votre langue peut naturellement gérer.
La sortie est la racine RTA du nombre donné, comme défini ci-dessus.
Cas de test
Input
Output
44
5
72
72
132
3
143
49
1111
1
999
999
OEIS connexe: A067031 . La sortie sera un nombre de cette séquence.
Brachylog ,
2422 octets{{
et}}
Explication
désolé pour l'explication bancale, c'est le meilleur que j'ai pu trouver
Essayez-le en ligne!
la source
{|↰₁}
est simple mais brillante. Bon travail!Haskell ,
5957 octets-2 octets grâce à user1472751 (en utilisant une seconde
until
au lieu de la liste-compréhension &head
)!Essayez-le en ligne!
Explication
Cela évaluera
True
pour n'importe quelle racine RTA:Le terme
(+)<*>read.reverse.show
est une version golfée dece qui ajoute un nombre à lui-même inversé.
La fonction
until
s'applique à plusieurs reprises(+)<*>read.reverse.show
jusqu'à ce qu'elle dépasse notre objectif.Enveloppant tout cela dans un autre
until
début avec1
et en ajoutant 1 avec(+1)
, vous trouverez la première racine RTA.S'il n'y a pas de racine RTA appropriée
n
, nous arrivons finalement à l'n
endroit oùuntil
n'applique pas la fonction depuisn<=n
.la source
until
la boucle externe: TIO05AB1E , 7 octets
Utilisation de la nouvelle version de 05AB1E (réécrite dans Elixir).
Code
Essayez-le en ligne!
Explication
la source
j
a une signification particulière dans un environnement récursif? Je ne connaissais que le₁
travers₆
et leλ
soi dans l'environnement récursif. Y en a-t-il d'autres en plusj
? EDIT: Ah, je vois aussi quelque chose£
dans le code source . Où est-il utilisé?j
vérifie essentiellement si la valeur d'entrée est dans la séquence.£
s'assure qu'il retourne les n premières valeurs de la séquence (les mêmes queλ<...>}¹£
).Gelée ,
1211 octetsMerci à @JonathanAllan d'avoir joué au golf sur 1 octet!
Essayez-le en ligne!
Comment ça marche
la source
Rubis,
6657 octetsEssayez-le en ligne!
Fonction récursive qui "annule" à plusieurs reprises l'opération RTA jusqu'à arriver à un nombre qui ne peut pas être produit par elle, puis retourne le minimum.
Au lieu d'utiliser
filter
, ce qui est long, je préfère simplementmap
passer de 1 au nombre. Pour chaque m de cette plage, si m + rev (m) est le nombre, il appelle la fonction récursivement sur m ; sinon, il renvoie n . Cela supprime à la fois le besoin de afilter
et nous donne un cas de base de f (n) = n gratuitement.Les points forts incluent l'enregistrement d'un octet avec
Integer#digits
:Le dernier serait un octet plus court, mais malheureusement, Ruby analyse les nombres commençant par
0
octal.la source
Python 2 , 70 octets
Essayez-le en ligne!
la source
Pyth , 12 octets
Découvrez une suite de tests!
Étonnamment rapide et efficace. Tous les cas de test exécutés simultanément prennent moins de 2 secondes.
Comment ça marche
la source
05AB1E , 13 octets
Essayez-le en ligne!
Explication
la source
global_counter
..>.>JavaScript (ES6), 61 octets
Essayez-le en ligne!
Commenté
la source
05AB1E ,
211615 octets-1 octet grâce à @Emigna .
Essayez-le en ligne.
Explication:
la source
Fusain , 33 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
la source
MATL , 17 octets
Essayez-le en ligne!
Explication
la source
:!`tG=~yV2&PU*+tG>~*tXzG=A~]f1)
Essayez-le en ligne!Java 8, 103 octets
Essayez-le en ligne.
Explication:
L'inversion arithmétique de l'entier est de 1 octet de plus ( 104 octets ):
Essayez-le en ligne.
la source
C (gcc) ,
12010099 octetsEssayez-le en ligne!
Étant donné l'entrée
i
, vérifie chaque entier dei
à 0 pour une séquence contenanti
.i
est la valeur d'entréeo
est la valeur de sortie (la racine minimale trouvée jusqu'à présent)a
est l'entier en cours de vérificationb
est l'élément courant dea
la séquence dec
etd
sont utilisés pour ajouterb
à son reversla source
-DL=for
vous économiserait 2 octets.i=o;
si vous utilisez-O0
, vous économisant 5 octets.Japt ,
161511 octetsEssayez-le
la source
Physica , 57 octets
Le mérite de la méthode revient à Doorknob .
Essayez-le en ligne!
la source
C (gcc) , 89 octets
J'exécute chaque séquence en [1, n ) jusqu'à ce que j'obtienne une correspondance; zéro est placé dans un boîtier spécial car il ne se termine pas.
Essayez-le en ligne!
la source