Étant donné, tout entier x> 0 et toute base y> 3.
- Additionnez tous les chiffres de x (s'ils sont écrits dans la base définie).
- Multipliez cela par le chiffre le plus élevé possible (est toujours
base -1
). - Répétez jusqu'à ce que cette valeur soit
(y - 1) ^ 2
La recherche est le nombre d'itérations et les étapes.
Exemple 1:
x= 739
y= 7
searched: (7 - 1) ^ 2 = 36
based: (b7)2104
sum: (dec)7
mul: (dec)42
based: (b7)60
sum: (dec)6
mul: (dec)36
2 steps needed -> answer is [2, 739, 42, 36] or [739, 42, 36, 2]
Exemple 2:
x = 1712
y = 19
s: 324
step1: 1712 -> 360
step2: 360 -> 648
step3: 648 -> 324
3 steps needed -> answer is [3, 1712, 360, 648, 324] or [1712, 360, 648, 324, 3]
Spécial:
Dans certains cas (certaines combinaisons avec une base de 3), vous ne pourrez pas (y - 1) ^ 2
aimer x = 53
et pour y = 3
. Pour cette raison, il y
doit être supérieur à 3 et vous pouvez l'ignorer.
Le nombre d'itérations doit être la première ou la dernière valeur
Il s'agit du nombre de octets le plus bas de code-golf .
code-golf
combinatorics
base-conversion
Dirk Reichel
la source
la source
Réponses:
Gelée ,
1413 octets-1 octet en imprimant en boucle (
Ṅ
remplacement d'une séparation de chaîneµ
et concaténation;
)TryItOnline!
Comment?
L'alternative de 13 octets imprime chaque entrée de la boucle plus un saut de ligne (
Ṅ
), et imprime finalement implicitement le nombre décrémenté des résultats collectés, supprimant le besoin d'une séparation de chaîne monadique (µ
) et d'une concaténation (;
).la source
Perl 6 , 60 octets
Étendu:
Usage:
la source
C,
116113 octets-3 octets pour recalculer le carré à chaque fois
Non golfé et utilisation:
la source
JavaScript (ES6),
97918482 octetsCas de test
Afficher l'extrait de code
la source
Gelée , 16 octets
Je suppose que je posterai tout de même, même s'il a été battu pendant que j'écrivais, car c'est un algorithme notablement différent et c'était intéressant à écrire. (Je n'ai pas pu comprendre comment
ÐĿ
analysé à partir des documents et j'ai dû y renoncer, même si je savais que cela conduirait probablement à une solution plus courte que celle-ci.)Essayez-le en ligne!
Explication:
L'utilisation de
<’¥
est essentiellement un moyen court d'écrire une dyade (lien avec deux arguments) qui renvoie toujours -1 (car nous savons que la réponse ne sera jamais plus petite que la base). Choisir entre l'exécution récursive et l'ensemble du programme de manière récursive nous permet de déterminer quand arrêter la boucle. Ensuite, lorsque la pile se déroule à la fin de la récursivité, nous continuons à incrémenter le -1 pour déterminer le nombre d'étapes.la source
MATL,
2521 octets4 octets enregistrés grâce à @Luis
Essayez-le en ligne!
Explication
la source
Mathematica, 80 octets
est le caractère à usage privéU+F4A1
utilisé pour représenter\[Function]
. Si le nombre d'étapes n'était pas requis dans la réponse, cela pourrait être fait en 60 octets:la source