Aufgabe
Die voranstehende, anhängende Sequenz wird wie folgt rekursiv definiert
- a (1) = 1
- a (n) = a (n-1) .n, wenn n gerade ist
- a (n) = na (n-1), wenn n ungerade ist
bei dem die . repräsentiert eine ganzzahlige Verkettung.
Die ersten Begriffe sind also: 1,12,312,3124,53124,531246,7531246,...
Dies ist A053064 .
Ihre Aufgabe ist es , einen ganze Zahl gegeben a> 0 zurückzukehren n solche, daß das n - te Element in den prepend append-Sequence gleich a , und wenn keine solche n existiert return 0, eine negative Zahl oder Fehler aus usw.
Regeln
- Die Eingabe kann als Ganzzahl, Zeichenfolge, Liste von Zeichen / Ziffern usw. erfolgen.
- Die Ausgabe kann auf STDOUT gedruckt oder zurückgegeben werden (Integer, String usw. sind in Ordnung).
- Bei ungültiger Eingabe & falls kein solches n existiert, kann Ihr Programm alles tun, außer eine positive Ganzzahl zurückzugeben (zB Endlosschleife, Rückgabe von 0 usw.).
- Sie können die 0-Indizierung verwenden, aber dann kann die Ausgabe, falls kein n vorhanden ist, nicht 0 sein
Testfälle
1 -> 1
12 -> 2
21 -> 0
123 -> 0
312 -> 3
213 -> 0
211917151311975312468101214161820 -> 21
2119171513119753102468101214161820 -> 0
333129272523211917151311975312468101214161820222426283031 -> 0
999795939189878583817977757371696765636159575553514947454341393735333129272523211917151311975312468101214161820222426283032343638404244464850525456586062646668707274767880828486889092949698100 -> 100
a(n-1)*(int(log(n))+1)+n
undn*(int(log(n))+1)+a(n-1)
?Antworten:
JavaScript (ES6), 40 Byte
Übernimmt die Eingabe als Zeichenfolge. Löst einen Rekursionsfehler aus, wenn kein Index gefunden wird.
Demo
Code-Snippet anzeigen
quelle
f=(n,s=k='1')=>n-s?f(n,++k&1?k+s:s+k):k
C # (.NET Core) ,
83, 80, 60,59 BytesProbieren Sie es online!
Nimmt die Eingabe als Zeichenfolge in eine Lambda-Funktion auf. 1-indiziert. Liefert den Index des Wertes für truthy oder Endlosschleifen für eine "Falsey"
quelle
Python 2 , 63 Bytes
-1 Byte dank @EriktheOutgolfer .
Probieren Sie es online!
Python 2 , 64 Bytes
-18 Bytes dank @officialaimm , weil ich nicht bemerkt habe, dass Fehler erlaubt waren!
Probieren Sie es online!
Python 2 , 82 Bytes (keine Endlosschleife)
Dieser gibt
0
für ungültige Eingaben zurück.Probieren Sie es online!
quelle
f=lambda x,i='1',j=2:i!=`x`and f(x,[i+`j`,`j`+i][j%2],j+1)or~-j
sys.setrecursionlimit()
. Können Sie ein tio zur Verfügung stellen?x=1
? Oderx=12
? Ich dachte, dass es nur für so einen Fehlerx=151311975312468101214
oder so etwas warf .Gelee , 12 Bytes
Probieren Sie es online!
Erläuterung:
quelle
05AB1E , 14 Bytes
Probieren Sie es online! oder als Testsuite
Erläuterung
0-indiziert .
Gibt -1 zurück, wenn sich die Eingabe nicht in der Sequenz befindet.
quelle
g
entfernten und dem gekürzten Append / Prepend-Ding. Ich werde meine Antwort löschenR , 73 Bytes
Liest aus stdin und gibt den Wert des Index zurück (implizit gedruckt). Endlosschleifen, wenn der Wert nicht in der Sequenz enthalten ist.
F
ist voreingestelltFALSE
und wird0
bei Verwendung in der Arithmetik umgewandelt.Probieren Sie es online!
quelle
Mathematica, 135 Bytes
quelle
Jelly ,
19 1815 BytesEine monadische Verknüpfung, die ganze Zahlen aufnimmt und zurückgibt.
Probieren Sie es online! (Sehr langsam - benötigt ~ 50s für TIO, um zu bestätigen, dass
3124
der Index erreicht ist4
)Verwenden Sie für eine viel schnellere Version das vorherige 18-Byte-Format (prüft nur die Länge der Eingabe, die ausreicht).
Wie?
quelle
211917151311975312468101214161820
?Schnelle 4 , 92 Bytes
Dies ist eine Endlosschleife für ungültige Fälle, sodass ich sie nicht in den Testlink aufgenommen habe.
Test Suite.
Amüsanterweise ist es länger mit einem Verschluss:
Test Suite.
quelle
Haskell ,
115-85BytesProbieren Sie es online!
quelle
Perl 5 , 54 + 1 (-n) = 55 Bytes
Probieren Sie es online!
Gibt nichts zurück, wenn nicht gefunden.
quelle
Haskell,
757157 BytesNimmt
n
als Zeichenfolge.Probieren Sie es online!
quelle