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 ith-Zahl in der Sequenz bestimmt, wie viele 3s vor dem ith 2und nach vorherigen 2s vorhanden sind. Da die Sequenz mit a beginnt 3, muss die Sequenz beginnen, 3 3 3 2und da 3am Anfang der Sequenz drei s stehen, 3 3 3 2muss sich die Teilsequenz dreimal wiederholen. Danach erreichen Sie, 3 3 2weil 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=4heißt 3/1 = 3und i=15es ist 11/4 = 2.75.
Lassen Sie uns allgemein werden
Gegeben Zahlen nund kwir können eine ähnliche Sequenz machen , die mit beginnt nund genau wie die ursprüngliche Reihenfolge der Anzahl an Index beschrieben ibestimmt , wie viele ns zeigen sich vor dem ith kund nach alle früheren ks.
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 nund kbestimmen eine Sequenz wie oben beschrieben und isind 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 iheißt i ≥ n.
Mit den drei Zahlen wird das Verhältnis von ns zu ks 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/837oder 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/2und 11:2akzeptabel ist, aber 22/4nicht.
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.