Die Sixers-Sequenz ist ein Name, der der Sequenz A087409 zugewiesen werden kann . Diese Sequenz habe ich in einem Numberphile-Video kennengelernt Sie kann wie folgt aufgebaut werden:
Nehmen Sie zuerst die Vielfachen von 6, die in Basis 10 geschrieben sind:
6, 12, 18, 24, 30, 36, ...
Verknüpfen Sie als Nächstes die Zahlen zu einem Ziffernstrom:
61218243036...
Gruppieren Sie den Stream schließlich in Paare und interpretieren Sie sie jeweils als Ganzzahl:
61, 21, 82, 43, 3, ...
Wenn wir die Zahlen in Paare gruppieren, beträgt die maximale Anzahl in der Sequenz 99, und es stellt sich heraus, dass alle nicht negativen ganzen Zahlen unter 100 in der Sequenz dargestellt werden. Diese Herausforderung besteht darin, den Index der ersten Instanz einer Zahl in der Sixers-Sequenz zu finden.
Eingang
Eine ganze Zahl im Bereich [0-99]
. Sie müssen keine Zahlen außerhalb dieses Bereichs berücksichtigen, und Ihre Lösung kann ein beliebiges Verhalten aufweisen, wenn eine solche Eingabe erfolgt.
Ausgabe
Der Index des ersten Auftretens der eingegebenen Nummer in der Sixers-Sequenz. Dies kann 0- oder 1-indiziert sein; Bitte sagen Sie, was Sie in Ihrer Antwort verwenden.
Regeln
- Die in der Einleitung beschriebene Vorgehensweise zum Generieren der Sequenz dient nur zur Veranschaulichung. Sie können eine beliebige Methode verwenden, solange die Ergebnisse identisch sind.
- Sie können vollständige Programme oder Funktionen einreichen.
- Beliebige sinnvolle Ein- und Ausgabemethoden sind erlaubt.
- Standardlücken sind nicht zulässig.
- Links zum Testen Ihres Codes online werden empfohlen!
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in jeder Sprache!
Testfälle
Hier ist eine Liste aller Ein- und Ausgänge im Format input, 0-indexed output, 1-indexed output
.
0 241 242
1 21 22
2 16 17
3 4 5
4 96 97
5 126 127
6 9 10
7 171 172
8 201 202
9 14 15
10 17 18
11 277 278
12 20 21
13 23 24
14 19 20
15 29 30
16 32 33
17 297 298
18 35 36
19 38 39
20 41 42
21 1 2
22 46 47
23 69 70
24 6 7
25 53 54
26 22 23
27 11 12
28 62 63
29 219 220
30 65 66
31 68 69
32 71 72
33 74 75
34 49 50
35 357 358
36 80 81
37 83 84
38 25 26
39 89 90
40 92 93
41 27 28
42 42 43
43 3 4
44 101 102
45 104 105
46 8 9
47 177 178
48 110 111
49 13 14
50 28 29
51 119 120
52 122 123
53 417 418
54 79 80
55 128 129
56 131 132
57 134 135
58 55 56
59 437 438
60 140 141
61 0 1
62 31 32
63 75 76
64 5 6
65 120 121
66 82 83
67 10 11
68 161 162
69 164 165
70 58 59
71 477 478
72 170 171
73 173 174
74 34 35
75 179 180
76 182 183
77 497 498
78 85 86
79 188 189
80 191 192
81 18 19
82 2 3
83 78 79
84 93 94
85 7 8
86 37 38
87 168 169
88 12 13
89 228 229
90 88 89
91 218 219
92 221 222
93 224 225
94 64 65
95 557 558
96 230 231
97 233 234
98 40 41
99 239 240
6, 2*6, 3*6,..., 325*6
ausreicht, um alle möglichen Werte zu generieren00
01
02
Antworten:
JavaScript (ES6),
71 6555 ByteDer Ausgang ist 0-indiziert.
Probieren Sie es online!
Wie?
Bei Verwendung einer rekursiven Funktion 'verbrauchen' wir entweder die ersten 2 Zeichen der Zeichenfolge aus verketteten Vielfachen von6 oder hängen neue Zeichen an, wenn wir weniger als 2 von ihnen haben.
Beispiel fürn=3 :
Kommentiert
quelle
Python 2 ,
9392858381686559 BytesProbieren Sie es online!
quelle
f=lambda n,s='612',i=3:n-int(s[:2])and f(n,s[2:]+`i*6`,i+1)or i-2
f=lambda n,s='612',i=18:n-int(s[:2])and-~f(n,s[2:]+`i`,i+6)
(0-indiziert).Perl 6 , 31 Bytes
Probieren Sie es online!
Verwendet die 1-indizierte Sequenz.
Erläuterung:
quelle
Haskell ,
82 ... 65 5854 BytesProbieren Sie es online!
quelle
05AB1E , 9 Bytes
0-indiziert. Akzeptiert entweder eine einzelne ganze Zahl ist, oder eine Liste von ganzen Zahlen als Eingabe.
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
quelle
100
,"100"
und100.0
sind für die meisten Funktionen wie Gleichheitsprüfungen und dergleichen gleich. In 05AB1E gibt es immer noch Umwandlungsfunktionen für int und string für einige Funktionen, z. B. zum Sortieren (numerische oder lexikografische Sortierung) oder zum Entfernen von Dezimalstellen nach dem Komma aus einem Gleitkomma beim Umwandeln in int, aber sie werden nicht so oft verwendet .Kohle , 12 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. 0-indiziert. Erläuterung:
quelle
J ,
2926 Bytes-3 Bytes dank FrownyFrog!
Probieren Sie es online!
0-basiert
quelle
i.~_2(".\;)6<@":@*1+i.@325
APL (Dyalog Unicode) , 26 Byte
Probieren Sie es online! - Prüft auf alle gültigen Eingaben.
Wie:
quelle
⍴
aber APL macht mir Angst ...⍴
ist APLs Umformung . Wenn Sie also einen abgeflachten Vektor umformen möchten, müssen Sie dies nur tun<new shape vector> ⍴ <vector to reshape>
Python 3 ,
8781 Bytes:Ganzzahleingabe, 0-indizierte Ausgabe.
Probieren Sie es online!
-6 Bytes dank @TFeld.
quelle
Wolfram Language (Mathematica) , 74 Byte
Probieren Sie es online!
2 Bytes aus @Expired Data gespeichert
quelle
Brachylog , 14 Bytes
Probieren Sie es online!
Zu langsam für Testfälle mit größeren Ausgaben.
quelle
R ,
7562 Bytes-13 Bytes dank Giuseppe.
Probieren Sie es online!
quelle
MathGolf , 10 Bytes
Probieren Sie es online!
Grundsätzlich das gleiche wie die 05AB1E-Antwort, aber ich verliere ein Byte, indem ich die verkettete Zahl explizit in einen String konvertieren muss.
Erläuterung
quelle
APL + WIN, 37 Bytes
Fordert zur Eingabe einer Ganzzahl auf. 1 indiziert.
Probieren Sie es online! Coutesy von Dyalog Classic
quelle
C # (Visual C # Interactive Compiler) ,
123 Byte,115 ByteProbieren Sie es online!
quelle
f(61)
sollte0
(es sieht so aus , als ob Ihre Lösung 0-indiziert ist)K (oK) , 22 Bytes
Lösung:
Probieren Sie es online!
Erläuterung:
0-indiziert.
quelle
Gelee , 10 Bytes
Probieren Sie es online!
TIO Link liefert alle Werte von 0 bis 99.
Erläuterung
quelle
Java 10,
119104102 BytesPort von @TFelds Python 2 Antwort .
-2 Bytes dank @Imus .
1-indiziert.
Probieren Sie es online aus.
Erläuterung:
Ursprüngliche
119117-Byte-Version:0-indiziert.
Probieren Sie es online aus.
Erläuterung:
quelle
CJam , 17 Bytes
Probieren Sie es online!
0-basiert.
Erläuterung
quelle
""
, aber keine Builtins für0
oder""
sind manchmal nützlich für Schleifen, da dies oft die gewünschten Startwerte sind. Was nicht100
oder1000
, ja, ich stimme zu, dass sie nützlicher wären als zu sagen18
oder19
:~
undi
aus Ihrem Code streichen. :(Japt , 12 Bytes
0-indiziert.
Probieren Sie es aus oder testen Sie alle Eingaben
quelle
Rot ,
97 bis94 BytesProbieren Sie es online!
quelle
Stax , 11 Bytes
Führen Sie es aus und debuggen Sie es
Die Eingabe ist eine Ganzzahl. Der Ausgang ist 0-indiziert.
quelle
Perl 5
-MList::Util=any -ap
, 50 BytesProbieren Sie es online!
1-basierte Ausgabe
quelle
Retina ,
83BytesIch habe wirklich keine Erfahrung mit kompliziertem Programmieren in Retina, aber ich bin zufrieden mit der Länge, in der ich es geschafft habe.
Gibt das 0-indizierte Ergebnis aus.
Probieren Sie es online
Erläuterung
quelle
Swift 5 / Xcode 10.2.1 ,
140134133 BytesProbieren Sie es online!
quelle
Retina 0,8,2 , 36 Bytes
Probieren Sie es online! Link enthält Testsuite. 1-indiziert. Erläuterung:
Stellen Sie
_
dem Eingang 2406 s voran.Ersetzen Sie alle 6
_
s durch die Anzahl der vorhergehenden_
s. Dies erzeugt die Folge0
,6
,12
...2400
, aber automatisch die Nummern verkettet.Überspringen Sie die führende 0 und suchen Sie das erste Ziffernpaar, das mit den letzten beiden Ziffern übereinstimmt, dh die mit Nullen aufgefüllte Eingabe (da die Zeichenfolge auf endet
0
; in der Tat verwendet die Testsuite die Tatsache, dass sie auf endet00
).Geben Sie die Anzahl der Ziffernpaare bis einschließlich der Übereinstimmung aus.
Retina 1 spart ein paar Bytes, da der Operator für die Zeichenfolgenwiederholung ein Byte kürzer ist und bereits standardmäßig
_
als rechter Operand verwendet wird, sodass die zweite Codezeile gerade wird2406*
. Ein weiteres Merkmal von Retina 1 ist der>
Modifikator, der die Substitution im Kontext des Trennzeichens nach dem Match erzeugt, das bei der Substitution mit 6 multipliziert wird. Bemerkenswerterweise hat dies auch keinen Einfluss auf die Gesamtanzahl der Bytes, da das Endergebnis so aussieht:$.>`
die Länge der Übereinstimmung in das Ergebnis einbezogen wird. Obwohl dies ein Byte kostet, speichern wir es sofort, da wir nicht mit dem übereinstimmen0
mehr abgleichen müssen. (Die Wiederholungen müssen ebenfalls um 6 reduziert werden.) Retina 1 kann auch Grundrechenarten in einer Substitution ausführen. Dies bedeutet, dass wir nicht auf Tricks zurückgreifen müssen, um ein Vielfaches von 6 zu erhalten, sondern nur die Zahlen generieren1..400
quelle
Bash , 80 Bytes
1-indiziert.
Probieren Sie es online!
quelle
C # (Visual C # Interactive Compiler) , 88 Byte
Probieren Sie es online!
Ein anderer Port von Java und Python antwortet.
Meine ursprüngliche Antwort unten:
C # (Visual C # Interactive Compiler) , 102 Byte
Probieren Sie es online!
Beide Lösungen verwenden eine 1-basierte Indizierung.
quelle
Ruby , 46 Bytes
Probieren Sie es online!
quelle
Clojure, 102 Bytes
So lange! :(
quelle