Generieren Sie die Sequenznummer der Basen, in denen n
sich ein Palindrom befindet ( OEIS A126071 ).
Im Einzelnen ist die Sequenz wie folgt definiert: Geben Sie eine Zahl ein n
, drücken Sie sie in der Basis a
aus a = 1,2, ..., n
, und zählen Sie, wie viele dieser Ausdrücke palindrom sind. Unter "Palindrom" versteht man das Umkehren der Basisziffern a
des Ausdrucks als atomare Einheiten (danke, @Martin Büttner ). Betrachten Sie als Beispiel n= 5
:
a=1
: der Ausdruck ist11111
: palindromischa=2
: der Ausdruck ist101
: palindromischa=3
: der Ausdruck ist12
: nicht palindromischa=4
: der Ausdruck ist11
: palindromischa=5
: der Ausdruck ist10
: nicht palindromisch
Daher ergibt sich für n=5
ist 3
. Beachten Sie, dass OEIS Basen 2, ..., n+1
anstelle von 1, ..., n
(danke, @beaker ) verwendet. Es ist äquivalent, weil die Ausdrücke in base 1
und n+1
immer palindrom sind.
Die ersten Werte der Sequenz sind
1, 1, 2, 2, 3, 2, 3, 3, 3, 4, 2, 3, 3, 3, 4, 4, 4, 4, 2, 4, 5, ...
Die Eingabe ist eine positive Ganzzahl n
. Die Ausgabe ist der erste n
Term der Sequenz.
Das Programm sollte theoretisch funktionieren (wenn genügend Zeit und Speicher vorhanden sind) n
Einschränkungen , die durch Ihren Standarddatentyp in internen Berechnungen verursacht werden.
Alle Funktionen erlaubt. Die niedrigste Anzahl von Bytes gewinnt.
quelle
Antworten:
Pyth, 13 Bytes
Die Kürze dieses
I
Befehls ist hauptsächlich auf den Befehl nvaluable "I
nvariant" zurückzuführen.Wenn
True
eine akzeptable Ausgabe für ist1
,msm_IjdkSdSQ
funktioniert (12 Byte).Probieren Sie es hier aus .
quelle
_I#
anstattf_IT
(Ich bin nicht 100% sicher , es war vorhanden, aber es scheint gewesen zu sein ).Jelly, 14 Bytes
Probieren Sie es online!
Nicht konkurrierende Version
Der Jelly-Interpreter hatte einen Fehler, der die Konvertierung in Unary unmöglich machte. Dies wurde nun behoben, sodass der folgende Code ( 12 Byte ) auch die vorliegende Aufgabe erfüllt.
Probieren Sie es online!
Wie es funktioniert
quelle
MATL , 19
20BytesVerwendet die aktuelle Version (10.1.0) , die älter als diese Herausforderung ist.
Probieren Sie es online aus !
Erläuterung
quelle
CJam, 20 Bytes
Teste es hier.
quelle
Haskell, 88 Bytes
quelle
ES6, 149 Bytes
Funktioniert auch für Basen> 36.
quelle
JavaScript (ES6),
105 bis95 ByteErläuterung
Nimmt eine Zahl von 1 bis 36 (die Beschränkung der Basiskonvertierung in JavaScript) und gibt ein Array der Sequenz zurück.
Rekursive Funktion, die nach Palindromen sucht, wenn eine Basis übergeben wird, andernfalls wird die Sequenz zurückgegeben, wenn nur übergeben
n
wird.Prüfung
quelle
Gelee , 8 Bytes
Probieren Sie es online!
Möglicherweise nicht konkurrierende Version:
Probieren Sie es online!
quelle
PHP, 73 + 1 Bytes
arbeitet für Basen
1
zu36
. Laufen Sie als Pipe mit-nR
oder versuchen Sie es online .quelle
PHP, 92 + 1 Bytes:
funktioniert für alle Basen. Laufen Sie als Pipe mit
-nR
oder versuchen Sie es online .quelle
Python 2, 97 Bytes
Mein erster Python-Beitrag, eigentlich mein erster Python-Code überhaupt
hat wahrscheinlich etwas Golfpotential.
Probieren Sie es online!
quelle
> <> 197 + 2 Bytes
+2 für -v Flag
tio.run scheint keine Ausgabe für n> 1 zurückzugeben, Sie können dies jedoch unter https://fishlanguage.com überprüfen . Die Eingabe erfolgt im Feld "Initial Stack".
quelle
Japt , 10 Bytes
Versuch es
Erläuterung
quelle
Python 2 , 85 Bytes
Probieren Sie es online!
Erwartet eine Ganzzahl als Argument.
Erläuterung:
quelle