Étant donné un entier n> 2 , affichez ou renvoyez le plus petit entier non négatif k tel que a (n, k) = 9 , où a (n, k) est défini par:
- a (n, 0) = n
- a (n, k + 1) =
- a (n, k) / 2 + 1 si a (n, k) est pair
- la somme des chiffres de a (n, k) ² (en base 10) si a (n, k) est impair
Exemples
Pour n = 5 , la sortie attendue est k = 4 :
a(5, 0) = 5
a(5, 1) = 7 (5² = 25 and 2 + 5 = 7)
a(5, 2) = 13 (7² = 49 and 4 + 9 = 13)
a(5, 3) = 16 (13² = 169 and 1 + 6 + 9 = 16)
a(5, 4) = 9 (16 / 2 + 1)
Pour n = 40 , la sortie attendue est k = 2 :
a(40, 0) = 40
a(40, 1) = 21 (40 / 2 + 1)
a(40, 2) = 9 (21² = 441 and 4 + 4 + 1 = 9)
Clarifications et règles
- L'entrée est garantie supérieure à 2.
- Votre programme devrait théoriquement fonctionner pour n'importe quelle valeur de n . (En pratique, il peut être limité par la taille entière maximale prise en charge par votre langue.)
- k peut être indexé 0 ou indexé 1. Veuillez l'indiquer dans votre réponse.
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte!
Premières valeurs
Voici les premières valeurs de n = 3 à n = 422 , avec k 0 indexé. (Pour l'indexation 1, ajoutez simplement 1
ces valeurs.)
1 2 4 3 3 5 0 4 3 4 2 6 1 1 6 5 5 4 1 5 2 3 3 7 6 2 3 2 2 7
6 6 5 6 6 5 1 2 2 6 6 3 1 4 3 4 4 8 1 7 6 3 5 4 6 3 2 3 3 8
7 7 3 7 4 6 6 7 5 7 6 6 6 2 4 3 3 3 6 7 3 7 2 4 7 2 6 5 6 4
7 5 2 5 6 9 6 2 3 8 2 7 1 4 6 6 6 5 1 7 4 4 3 3 7 4 3 4 2 9
6 8 6 8 6 4 6 8 2 5 3 7 6 7 3 8 2 6 7 8 6 7 5 7 6 7 4 3 3 5
6 4 3 4 4 4 6 7 6 8 3 4 6 8 7 3 6 5 6 8 3 3 2 7 6 6 5 7 6 5
7 8 2 6 3 3 6 6 6 7 4 10 6 7 3 3 6 4 1 9 2 3 3 8 7 2 6 5 2 7
7 7 6 7 3 6 7 2 4 8 3 5 6 5 6 4 2 4 6 8 3 5 6 4 7 5 2 3 6 10
7 7 3 9 2 7 1 9 5 7 6 5 6 7 4 9 6 3 6 6 3 4 2 8 7 7 6 8 6 4
7 9 4 3 3 7 7 8 3 9 4 7 6 8 3 6 6 8 7 7 7 8 6 5 7 4 6 4 2 6
7 7 6 5 3 4 7 5 4 5 3 5 7 7 6 8 2 7 1 9 6 4 6 5 7 7 2 9 6 8
7 4 3 7 4 6 6 7 6 9 3 4 6 4 2 3 3 8 1 7 6 7 2 6 7 8 3 7 5 6
7 8 2 9 3 3 6 7 6 4 4 4 6 7 6 7 6 7 6 8 7 5 6 11 7 7 3 8 4 4
7 4 6 7 3 5 6 2 2 10 6 3 6 4 3 4 4 9 7 8 3 3 6 7 7 6 4 3 6 8
9! ≠ 9
an opinion or conclusion formed on the basis of incomplete information.
Réponses:
Husk , 13 octets
Ceci est indexé 1. Essayez-le en ligne!
Explication
Rien d'extraordinaire ici.
la source
Lω
cela était résolu.Perl 6 , 41 octets (40 caractères)
Essayez-le en ligne!
Cela utilise 1-indexation des k, donc il donne 1 réponses plus élevées que les exemples dans OP. Si ce n'est pas ce que signifie l'indexation 1, je devrai ajouter 1 octet de plus.
Explication : c'est une fonction anonyme. Nous utilisons simplement la fonction de Perl 6 pour générer des listes en utilisant la récursivité :—). Il ressemble à ceci:
(first element),(block that takes the previous element and gives the next)...(end condition)
. Dans ce cas, le premier élément est$_
(argument de la fonction principale) et la condition de fin est9
(remplie lorsque nous générons un 9). Dans le bloc du milieu, nous utilisons$_
pour faire référence à son argument (= l'élément précédent de la séquence). C'est?? !!
l'ancien opérateur ternaire (mieux connu sous le nom de? :
). Enfin, nous prenons la longueur de cette liste en forçant le contexte numérique par+(...)
.La dernière chose étrange ici est la somme des chiffres. Les nombres sont
Cool
(se comportent à la fois comme des chaînes et des nombres), nous utilisons donc une méthode de chaîne.comb
sur$_²
(donner la liste des caractères = chiffres), puis ajouter les caractères (qui les convertit à nouveau en nombres).la source
Gelée , 17 octets
Essayez-le en ligne!
Approche directe. Utilise l'indexation basée sur 0.
Explication
la source
do-while n != 9
au lieu d'unwhile n!= 9
Python 2 ,
129126766867645453 octets-3 octets grâce à Jonathan Frech. -8 octets grâce à Maltysen. -7 octets grâce à Jonathan Allan. -1 octet merci à M. Xcoder.
Essayez-le en ligne!
De la part de quelqu'un qui ne connaît probablement pas assez les mathématiques, cela semble complètement arbitraire. : P
la source
)%2and sum
par)%2*sum
, en économisant trois octets.k
entièrement et économiser encore sept octetsMathematica, 58 octets
1 indexé
Essayez-le en ligne! (afin de travailler sur les mathématiques,
Tr
est remplacé parTotal
)voici la version -1 octet par @JungHwanMin (mais cela ne fonctionne pas sur les mathématiques donc j'ai gardé les deux)
Mathematica, 57 octets
la source
2∣#
au lieu deOddQ@#
et permutez les deux expressions deIf
.JavaScript (ES6),
5950 octets0 indexé.
Essayez-le
Explication
La première chose que nous faisons est de calculer
n-9
. Sin==9
alors cela, évidemment, donne0
et les choses s'arrêtent là. Sin!=9
alorsn-9
donnera une valeur non nulle qui, étant véridique, signifie que nous pouvons continuer à travers le ET logique. Nous appelons à nouveau la fonction, en lui passant une nouvellen
, calculée comme suit:Si
n
modulo2
est véridique, c'est-à-dire qu'iln
est étrange.Multipliez-le
n
lui-même, convertissez-le en chaîne et détruisez-la en un tableau de caractères individuels (chiffres).Rejoins les caractères à une chaîne en utilisant
+
une expression mathématique.Évaluez cette expression en nous donnant la somme des chiffres de
n*n
.Si
n%2
est falsey (c'est-à-dire,n
est pair) alors nous divisons simplementn
par2
et ajoutons1
.Au résultat de l'appel de la fonction à nouveau, nous ajoutons ensuite
1
. Ainsi, en utilisant une entrée initiale de5
, le processus se déroule comme suit:la source
Gelée ,
1615 octets-1 octet grâce aux miles (utilisation du ternaire si)
Un lien monadique prenant et renvoyant des numéros.
1 indexé
Essayez-le en ligne! ou voir une suite de tests (contraint les résultats à être indexés 0 et les formats comme bloc de code OP)
Comment?
la source
²DSµH‘$Ḃ?n9$пL
Haskell,
6259 octetsEssayez-le en ligne!
Edit: -3 octets grâce à @ Ørjan Johansen.
la source
last$x:[y|odd a]
peut être raccourcicycle[x,y]!!a
.Perl 5 , 56 + 1 (-n) = 57 octets
Essayez-le en ligne!
la source
9
.05AB1E , 16 octets
Essayez-le en ligne!
Explication
la source
VB.NET (.NET 4.5.2), 107 + 20 (importations) = 117 octets
A besoin
Imports System.Linq
Fonction qui prend
n
comme entrée entière et renvoie une base 0k
.Non golfé:
la source
Golfscript, 34 octets
Essayez-le en ligne!
J'ai vraiment besoin d'un meilleur moyen que de additionner les chiffres d'un nombre.
la source
Pyth ,
2322 octetsPour l'instant, il s'agit d'une fonction récursive,
mais j'essaierai de passer à..W
(fonctionnel pendant) pour enregistrer des octets à la placeEssayez-le ici! (avec code supplémentaire pour appeler la fonction - utiliser- sans espaces)
y
<your_number>
la source
Java 8,
11098 octets0 indexé
Explication:
Essayez-le ici.
la source
Clojure v1.8,
124113112 octets0 indexé
Essayez-le en ligne!
Explication
la source
Pyth, 18 octets
Essayez-le en ligne: Démonstration
Explication:
la source
Japt,
2221 octets0 indexé.
Essayez-le
Explication
Saisie implicite d'entier
U
.Générez un tableau d'entiers de
0
àU-1
et passez chacun par une fonction.Définissez la valeur de
U
.Si
U
est divisible par 2.U
divisé par 2, plus 1 (Ä
).Sinon:
U
à la puissance de 2 (²
), divisé en un tableau de chiffres (ì
) et réduit par addition (x
).Ajoutez le tableau résultant au tableau d'entrées.
Recherchez l'index de la première occurrence de
9
dans le tableau. Sortie implicite du résultat.la source
@¥9}a@=u ?U²ìx :U/2Ä;°T
si seulement il y avait une méthode qui