Bei einer Ganzzahl n> 2 wird die kleinste nicht negative Ganzzahl k ausgegeben oder zurückgegeben, so dass a (n, k) = 9 ist , wobei a (n, k) definiert ist durch:
- a (n, 0) = n
- a (n, k + 1) =
- a (n, k) / 2 + 1, wenn a (n, k) gerade ist
- die Summe der Ziffern von a (n, k) ² (in Basis 10), wenn a (n, k) ungerade ist
Beispiele
Für n = 5 ist die erwartete Ausgabe 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)
Für n = 40 ist die erwartete Ausgabe k = 2 :
a(40, 0) = 40
a(40, 1) = 21 (40 / 2 + 1)
a(40, 2) = 9 (21² = 441 and 4 + 4 + 1 = 9)
Erläuterungen und Regeln
- Die Eingabe ist garantiert größer als 2.
- Ihr Programm sollte theoretisch für jeden Wert von n funktionieren . (In der Praxis kann dies durch die maximale Ganzzahlgröße begrenzt sein, die von Ihrer Sprache unterstützt wird.)
- k kann entweder 0-indiziert oder 1-indiziert sein. Bitte geben Sie dies in Ihrer Antwort an.
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes!
Erste Werte
Unten sind die ersten Werte von n = 3 bis n = 422 mit k 0 -Idex. (Für die 1-Indizierung addieren Sie einfach 1
diese Werte.)
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.
Antworten:
Schale , 13 Bytes
Dies ist 1-indiziert. Probieren Sie es online!
Erläuterung
Nichts Besonderes hier.
quelle
Lω
gelöst würde.Perl 6 , 41 Bytes (40 Zeichen)
Probieren Sie es online!
Dies verwendet die 1-Indizierung von ks, sodass 1 höhere Antworten als in den Beispielen in OP angegeben werden. Wenn dies nicht die Bedeutung der 1-Indizierung ist, muss 1 Byte mehr hinzugefügt werden.
Erläuterung : Es handelt sich um eine anonyme Funktion. Wir verwenden nur die Perl 6-Funktion zum Generieren von Listen unter Verwendung der Rekursion: -). Es sieht wie folgt aus :
(first element),(block that takes the previous element and gives the next)...(end condition)
. In diesem Fall ist das erste Element$_
(Argument der Hauptfunktion) und die Endebedingung ist9
(erfüllt, wenn wir eine 9 erzeugen). Im mittleren Block$_
verweisen wir auf sein Argument (= das vorherige Element der Sequenz). Das?? !!
ist der alte ternäre Operator (besser bekannt als? :
). Schließlich nehmen wir die Länge dieser Liste durch Erzwingen des numerischen Kontexts durch+(...)
.Das letzte Seltsame hier ist die Summe der Ziffern. Zahlen sind
Cool
(verhalten sich wie Zeichenfolgen und Zahlen), daher verwenden wir eine Zeichenfolgenmethode.comb
für$_²
(Liste der Zeichen = Ziffern) und addieren dann die Zeichen (die sie wieder in Zahlen umwandeln).quelle
Gelee , 17 Bytes
Probieren Sie es online!
Unkomplizierter Ansatz. Verwendet eine 0-basierte Indizierung.
Erläuterung
quelle
do-while n != 9
statt einwhile n!= 9
Python 2 ,
129126766867645453 Bytes-3 Bytes dank Jonathan Frech. -8 Bytes dank Maltysen. -7 Bytes dank Jonathan Allan. -1 Byte danke an Herrn Xcoder.
Probieren Sie es online!
Von jemandem, der wahrscheinlich nicht genug Mathe weiß, scheint dies völlig willkürlich zu sein. : P
quelle
)%2and sum
mit)%2*sum
, spart drei Bytes.k
vollständig loswerden und weitere sieben Bytes speichernMathematica, 58 Bytes
1-indiziert
Probieren Sie es online! (um mit Mathematik zu arbeiten,
Tr
wird ersetzt durchTotal
)hier ist eine -1-Byte-Version von @JungHwanMin (aber es funktioniert nicht mit Mathematik, also habe ich beide beibehalten)
Mathematica, 57 Bytes
quelle
2∣#
anstelle vonOddQ@#
und vertauschen Sie die beiden Ausdrücke vonIf
.JavaScript (ES6),
59-50Byte0-indiziert.
Versuch es
Erläuterung
Das erste, was wir tun, ist zu berechnen
n-9
. Wennn==9
dann das offensichtlich gibt0
und die Dinge dort aufhören. Wennn!=9
dannn-9
ein Wert ungleich Null angegeben wird, bedeutet dies, dass wir mit dem logischen UND fortfahren können, da dies wahr ist. Wir rufen die Funktion erneut auf und übergeben ihr eine neuen
, die wie folgt berechnet wird:Wenn
n
Modulo2
wahr ist,n
ist es ungerade.Multiplizieren Sie es
n
mit sich selbst, konvertieren Sie es in eine Zeichenfolge und zerlegen Sie diese Zeichenfolge in ein Array einzelner Zeichen (Ziffern).Fügen Sie die Zeichen mithilfe von wieder zu einer Zeichenfolge zusammen
+
und geben Sie uns einen mathematischen Ausdruck.Bewerten Sie diesen Ausdruck und geben Sie die Summe der Ziffern von
n*n
.Wenn
n%2
falsch ist (dh geraden
ist), dann teilen wir einfachn
durch2
und addieren1
.Zum Ergebnis des erneuten Aufrufs der Funktion fügen wir dann hinzu
1
. Unter Verwendung einer ersten Eingabe von läuft5
der Prozess also wie folgt ab:quelle
Jelly ,
1615 Bytes-1 Byte dank Meilen (Verwendung von ternary if)
Ein monadischer Link, der Nummern aufnimmt und zurückgibt.
1-indiziert
Probieren Sie es online! oder sehen eine Testsuite (nötigen Ergebnisse 0-indizieren und Formate wie OPCode-Block zu sein)
Wie?
quelle
²DSµH‘$Ḃ?n9$пL
Haskell,
6259 BytesProbieren Sie es online!
Edit: -3 Bytes dank @ Ørjan Johansen.
quelle
last$x:[y|odd a]
kann auf gekürzt werdencycle[x,y]!!a
.Perl 5 , 56 + 1 (-n) = 57 Bytes
Probieren Sie es online!
quelle
9
.05AB1E , 16 Bytes
Probieren Sie es online!
Erläuterung
quelle
VB.NET (.NET 4.5.2), 107 + 20 (Importe) = 117 Byte
Benötigt
Imports System.Linq
Funktion, die
n
eine Ganzzahleingabe annimmt und eine 0-basierte zurückgibtk
.Ungolfed:
quelle
Golfscript, 34 Bytes
Probieren Sie es online!
Ich brauche wirklich einen besseren Weg, als die Ziffern einer Zahl zu addieren.
quelle
Pyth ,
2322 BytesIm Moment ist dies eine rekursive Funktion,
aber ich werde versuchen, auf..W
(funktionsfähig während) umzuschalten , um stattdessen Bytes zu sparenProbieren Sie es hier aus! (mit zusätzlichem Code zum Aufrufen der Funktion - verwenden- ohne Leerzeichen)
y
<your_number>
quelle
Java 8,
11098 Bytes0-indiziert
Erläuterung:
Probieren Sie es hier aus.
quelle
Clojure v1.8,
124113112 Bytes0-indiziert
Probieren Sie es online!
Erläuterung
quelle
Pyth, 18 Bytes
Probieren Sie es online aus: Demonstration
Erläuterung:
quelle
Japt,
2221 Bytes0-indiziert.
Versuch es
Erläuterung
Implizite Eingabe einer Ganzzahl
U
.Generieren Sie ein Array von Ganzzahlen von
0
bisU-1
und übergeben Sie diese jeweils einer Funktion.Stellen Sie den Wert von ein
U
.If
U
ist teilbar durch 2.U
geteilt durch 2 plus 1 (Ä
).Sonst:
U
hoch 2 (²
), aufgeteilt in eine Reihe von Ziffern (ì
) und durch Addition (x
) reduzieren .Hängen Sie das resultierende Array an das Array der Eingaben an.
Suchen Sie den Index des ersten Vorkommens
9
im Array. Das Ergebnis implizit ausgeben.quelle
@¥9}a@=u ?U²ìx :U/2Ä;°T