Einführung
Die EKG-Sequenz beginnt mit 1 und 2, dann gilt die Regel, dass der nächste Term die kleinste positive ganze Zahl ist, die noch nicht in der Sequenz enthalten ist und deren gemeinsamer Faktor mit dem letzten Term größer als 1 ist (es handelt sich nicht um Coprimes).
Die ersten Begriffe sind:
1, 2, 4, 6, 3, 9, 12, 8, 10, 5, 15, ...
Es wird EKG genannt, weil der Graph seiner Ausdrücke einem EKG ziemlich ähnlich ist.
Es ist die Sequenz A064413 im OEIS .
Herausforderung
Sie müssen eine Funktion schreiben, die eine ganze Zahl n als Eingabe verwendet und ausgibt, wie viele der n ersten Terme der Sequenz größer als n sind .
Da die Regel der Sequenz mit dem dritten Term beginnt, muss die Ganzzahl der Eingabe größer oder gleich 3 sein. Bei einer gegebenen Eingabe 10
lautet die Ausgabe beispielsweise, 1
dass der siebte Term 12
10 ist und keiner der anderen ersten zehn Terme 10 überschreitet.
Testfälle
3 -> 1
10 -> 1
100 -> 9
1000 -> 70
Regeln
- Für Ganzzahlen kleiner als 3 kann die Funktion 0 oder einen Fehlercode ausgeben.
- Keine anderen Regeln außer: Es ist Code Golf, je kürzer desto besser!
1
es sich um den 0. Term der Sequenz handelt und daher beispielsweise15
der 10. Term ist, anstatt5
?Antworten:
Jelly ,
201918 BytesDies ist ein volles Programm.
Probieren Sie es online!
Wie es funktioniert
Beachten Sie, dass die generierte Sequenz[ 1 , 0 , 2 , 4 , 6 , 3 , 9 , 12 , 8 , 10 , 5 , 15 , … ] . Da der n fache Aufruf der Hilfsverbindung eine Folge der Länge n + 1 , wird die 0 praktisch ignoriert.
quelle
Perl 6 ,
66635958 Bytes-4 Bytes dank Jo King
Probieren Sie es online!
TIO für n = 1000 zu langsam.
quelle
first &f,1..*
das umgeschrieben werden kann+(1...&f)
, hat dein Junction-Trick doch geholfen.JavaScript (ES6),
107106105 BytesProbieren Sie es online!
Wie?
a.indexOf(k)
ist gleich entweder:a.indexOf(k) + C(k, a[0])
quelle
Haskell,
8982 BytesEdit: -7 Bytes dank @ H.PWiz
Probieren Sie es online!
quelle
Schale , 16 Bytes
Probieren Sie es online!
Erläuterung
quelle
MATL , 29 Bytes
Probieren Sie es online!
Erläuterung:
quelle
GE:
)?while
APL (Dyalog Unicode) , 39 Byte SBCS
-2 Bytes dank ngn, -1 Bytes durch korrekte bedingte Prüfung.
Probieren Sie es online!
quelle
⍣
Übergibt ein eigenes linkes Argument an die Operandenfunktion, sodass keine Notwendigkeit besteht∘
. wird auch⍵
nicht mit dem Ding auf der rechten Seite verbunden, da es mit einer Funktion (⍳
) beginnt , es ist also nicht nötig⊢
.JavaScript,
939187 BytesLöst einen Überlauffehler für
0
oder1
, Ausgaben0
für aus2
.Probieren Sie es online aus
quelle
APL (NARS), Zeichen 121, Bytes 242
Test in weniger als einer Minute hier in der Laufzeit:
Natürlich gibt es keine Prüfung auf Typ und Reichweite ...
quelle
Japt,
2321 BytesVersuch es
quelle
Python 3 , 153 Bytes
Probieren Sie es online! (Warnung: Die Auswertung dauert ca. 30 Sekunden.)
quelle