Hier ist eine interessante Sequenz, die von Paul Loomis, einem Mathematiker an der Bloomsburg University, entdeckt wurde. Von seiner Seite zu dieser Sequenz:
Definieren Sie
f(n) = f(n-1) + (the product of the nonzero digits of f(n-1))
f(0) = x
mit einer x
beliebigen positiven Ganzzahl, die in Basis 10 geschrieben ist.
Ausgehend von erhalten f(0)=1
Sie also die folgende Sequenz
1, 2, 4, 8, 16, 22, 26, 38, 62, 74, 102, 104, ...
So weit, so normal. Die interessante Eigenschaft kommt ins Spiel, wenn Sie eine beliebige andere Ganzzahl als Ausgangspunkt nehmen. Schließlich konvergiert die Sequenz zu einem Punkt entlang der obigen x=1
Sequenz. Zum Beispiel beginnend mit x=3
Ausbeuten
3, 6, 12, 14, 18, 26, 38, 62, 74, 102, ...
Hier sind einige weitere Sequenzen, die jeweils nur angezeigt werden, bis sie erreicht sind 102
:
5, 10, 11, 12, 14, 18, 26, 38, 62, 74, 102, ...
7, 14, 18, 26, 38, 62, 74, 102, ...
9, 18, 26, 38, 62, 74, 102, ...
13, 16, 22, 26, 38, 62, 74, 102, ...
15, 20, 22, 26, 38, 62, 74, 102, ...
17, 24, 32, 38, 62, 74, 102, ...
19, 28, 44, 60, 66, 102, ...
Er vermutete und bewies empirisch x=1,000,000
, dass diese Eigenschaft (dh, dass alle eingegebenen Zahlen zur gleichen Reihenfolge konvergieren) zutrifft.
Die Herausforderung
Geben Sie bei einer positiven Ganzzahl 0 < x < 1,000,000
die Zahl aus, bei der die f(x)
Sequenz zur Sequenz konvergiert f(1)
. Zum Beispiel x=5
wäre dies 26
, da dies die erste Zahl ist, die beiden Sequenzen gemeinsam ist.
x output
1 1
5 26
19 102
63 150056
Regeln
- Gegebenenfalls können Sie davon ausgehen, dass die Eingabe / Ausgabe in den systemeigenen Integer-Typ Ihrer Sprache passt.
- Die Eingabe und Ausgabe kann durch jede bequeme Methode erfolgen .
- Es ist entweder ein vollständiges Programm oder eine Funktion zulässig. Bei einer Funktion können Sie die Ausgabe zurückgeben, anstatt sie zu drucken.
- Standardlücken sind verboten.
- Dies ist Codegolf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Byte) gewinnt.
quelle
Jelly ,
1814 BytesDie Eingabe ist ein Singleton-Array.
Probieren Sie es online!
Wie es funktioniert
quelle
Python 2 ,
1119593 BytesWenn Sie das Auspacken
replace(*'01')
wie in @Rod verwenden, antworten Siedank @Lynn mit -18 Bytes
Probieren Sie es online!
quelle
while cmp(*l)
auch sein!Haskell , 65 Bytes
Probieren Sie es online!
quelle
Python 2 , 78 Bytes
Probieren Sie es online!
quelle
Schale , 13 Bytes
Übernimmt die Eingabe als Singleton-Liste.
Probieren Sie es online!
Erläuterung
quelle
Python 3 ,
126125 BytesProbieren Sie es online!
Nimm die Eingabe als String
quelle
Java (JDK 10) , 99 Byte
Probieren Sie es online!
Meistens eine iterative Portierung von Arnauld's JavaScript-Antwort , also stimmt ihm zu!
quelle
Jelly , 23 Bytes
Probieren Sie es online!
quelle
J , 50 Bytes
implizite Artfunktionsdefinition
Wenn das Argument (z. B. 63) in einen REPL-Ausdruck eingefügt würde, könnte es 45 sein, z
,&1
Fügen Sie 1 hinzu, um die Suchsequenz sowie die Argumentsequenz zu generieren^:(<453)"0
iteriert jeweils, bis 1 Million in der Reihenfolge von 1 erreicht ist+ [: */@(*#]) (#~10)&#:
Die Gabel fügt dem Haken hinzu, was das Produkt der Ziffern ergibt(e.~ # ])/
Verwendet das Wiederholungselement, falls vorhanden, um die Schnittmenge von Listen zu erhalten{.
gibt nur den ersten gemeinsamen Wert zurückProbieren Sie es online!
quelle
R ,
11086 BytesTIO
Vorgängerversion 110:
TIO
quelle