Adaptiert von diesem FiveThirtyEight-Rätsel .
Hintergrund
Untersuche die folgende unendliche Folge:
3 3 3 2 3 3 3 2 3 3 3 2 3 3 2 3 3 3 2 ...
Angenommen, die Sequenz ist 1-indiziert. Die i
th-Zahl in der Sequenz bestimmt, wie viele 3
s vor dem i
th 2
und nach vorherigen 2
s vorhanden sind. Da die Sequenz mit a beginnt 3
, muss die Sequenz beginnen, 3 3 3 2
und da 3
am Anfang der Sequenz drei s stehen, 3 3 3 2
muss sich die Teilsequenz dreimal wiederholen. Danach erreichen Sie, 3 3 2
weil die vierte Nummer in der Sequenz ist 2
.
Das FiveThirtyEight-Rätsel fragt nach der Begrenzung des Verhältnisses von Dreien zu Zweien (was ich hier nicht verderben werde), aber Sie können auch fragen, wie hoch das kumulative Verhältnis nach dem Index ist i
. Zum Beispiel ist das Verhältnis bei i=4
heißt 3/1 = 3
und i=15
es ist 11/4 = 2.75
.
Lassen Sie uns allgemein werden
Gegeben Zahlen n
und k
wir können eine ähnliche Sequenz machen , die mit beginnt n
und genau wie die ursprüngliche Reihenfolge der Anzahl an Index beschrieben i
bestimmt , wie viele n
s zeigen sich vor dem i
th k
und nach alle früheren k
s.
Beispiele:
n=2, k=5
gibt die Reihenfolge an 2 2 5 2 2 5 2 2 2 2 2 5 2 2 5 ...
n=3, k=0
gibt 3 3 3 0 3 3 3 0 3 3 3 0 0 3 3 3 0 ...
n=1, k=3
gibt 1 3 1 1 1 3 1 3 1 3 1 3 1 1 1 3 1 ...
Die Herausforderung
Schreiben Sie eine Funktion / ein Programm und machen Sie damit folgendes. Als Eingabe nehmen:
- eine positive ganze Zahl
n
- eine nichtnegative ganze Zahl
k ≠ n
- eine positive ganze Zahl
i > n
Die ersten beiden Eingaben n
und k
bestimmen eine Sequenz wie oben beschrieben und i
sind ein Index. In den Beispielen verwende ich die 1-Indizierung, aber Sie haben die Freiheit, die 0- oder 1-Indizierung zu verwenden. Wenn 0-indiziert dann die Beschränkung i
heißt i ≥ n
.
Mit den drei Zahlen wird das Verhältnis von n
s zu k
s in der Reihenfolge bis einschließlich der Zahl am Index ausgegeben i
. Das Ausgabeformat kann entweder ein Dezimalwert mit mindestens 5 Stellen Genauigkeit oder ein exakter Wert als Verhältnis wie 3524/837
oder sein 3524:837
.
In Dezimalform kann die letzte Ziffer beliebig gerundet werden. Nachgestellte Nullen und Leerzeichen sind zulässig.
In jeder der Zeichenkettenformen müssen die beiden Zahlen normalisiert werden, damit sie Koprime sind. Zum Beispiel, wenn das Verhältnis 22/4 war 11/2
und 11:2
akzeptabel ist, aber 22/4
nicht.
Beispiele
n k i output
2 4 15 2.75 or 11/4
6 0 666 5.1101 or 557:109
50 89 64 63 or 63:1
3 2 1000 2.7453 or 733/267
9 12 345 9.4545 or 104/11
Dies ist Codegolf pro Sprache, so dass der kürzeste Code in jeder Sprache der Gewinner ist.
/
oder :
die Herausforderung nur unnötig zu komplizieren.