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.Antworten:
Schale , 16 Bytes
Probieren Sie es online!
Nimmt Eingaben in der gleichen Reihenfolge wie die Testfälle vor. Gibt eine rationale Zahl aus. Ich habe das Gefühl, dass es zu viele hochgestellte Texte gibt, aber ich weiß nicht, wie ich sie loswerden soll ...
Erläuterung
quelle
Python 3 ,
94928987 BytesProbieren Sie es online!
Credits
quelle
.count(n)
?Jelly , 22 Bytes
Probieren Sie es online!
Volles Programm. Nimmt Argumente
n
,k
,i
.Es gibt einen Fehler, der dazu führt, dass dies um 1 Byte unnötig länger sein muss.
quelle
`
es funktioniert , wenn ich eine setze . Oh, und wo Ihre Antwort anders ist, ist, dass ich vergessen habe, einen Golf zu spielen, den ich in einer anderen Sprache gefunden habe> _>Jelly ,
2516 Bytes-9 Bytes ~ 50% entfallen auf Erik den Jelly Antwort des Outgolfer (1. den neuen-ish Schlüssel schnell mit
ƙ
sogar mit einem Fehler in dem Interpreter zur Zeit ein Byte Kalkulation, 2. mit einer kartiert Wiederholung zu vermeiden Zählen und Indizierung in die aktuelle Sequenz .) Geh und gib ihm etwas Ehre!Ein volles Programm nimmt drei Argumente:
n
,k
,i
das druckt das Ergebnis aus .Probieren Sie es online!
Wie?
Beispiel Lauf mit Eingängen
n=2
,k=3
,i=30
:quelle
Mathematica, 85 Bytes
Probieren Sie es online!
quelle
APL (Dyalog Unicode) ,
12670 ByteProbieren Sie es online!
Vielen Dank an @ Adám für das Auslöschen von 56 Bytes aus dieser Antwort.
Dies ist ein argumentlose Tradfn ( einf itional f unctio n ) wobei 1 Eingang, der eine 3 - Element - Liste ist.
⎕PP←5
wird nicht zur Byteanzahl hinzugefügt, da hiermit nur die P rint P- Wiederholung auf 5 Stellen begrenzt wird.∇f
und∇
werden nicht zur Byteanzahl hinzugefügt, da sie nicht Teil des Codes sind, sondern nur Begrenzer für die Tradfn.Wie es funktioniert:
quelle
R 88 Bytes
Probieren Sie es online!
quelle
for
Schleifenkörper loswerden, da es nur eine Anweisung gibt.Schnell , 152 Bytes
Wird es kürzer als Java sein?
Erläuterung
quelle
Ruby ,
777170 BytesProbieren Sie es online!
Gibt ein Rational zurück, das sowohl als Zahl als auch als String auf den exakten reduzierten Bruch arbeitet.
quelle
Pyth , 24 Bytes
Testsuite.
Fixpunkt
[n]
unter bestimmter Funktion des Arrays.quelle
Zephyr , 284 Bytes
Nimmt die drei Zahlen von stdin in drei separaten Zeilen. Gibt ein genaues Verhältnis wie
104/11
oder aus63
.Ungolfed
quelle