Stellen Sie sich eine Straße als eine Zahlenlinie vor, die auf 0
unbestimmte Zeit beginnt und fortgesetzt wird:
.................................................................
Es sind zwei Autos unterwegs: C
und R
. C
ist der Polizist, der versucht zu fangen R
, der Räuber. C
beginnt um 0
und R
beginnt irgendwo auf der Straße:
C.............................R..................................
Der Cop ist schon in Bewegung - er jagt den Räuber. Er hat eine konstante Geschwindigkeit. Der Räuber sprang gerade in sein Auto. Er beschleunigt. Mit jedem Tick erhöht sich die Geschwindigkeit des Räubers um seine Beschleunigung.
Sagen wir, die Geschwindigkeit des Polizisten ist 7
und die Beschleunigung des Räubers ist 1
. Wenn der Räuber um beginnt 30
, sieht die Straße bei jedem Tick folgendermaßen aus:
C.............................R..................................
.......C.......................R.................................
..............C..................R...............................
.....................C..............R............................
............................C...........R........................
...................................C.........R...................
..........................................C........R.............
.................................................C........R......
Nach dem letzten Tick oben ist die Geschwindigkeit des Räubers gleich der des Polizisten und er ist immer noch vorne. Da sich der Cop mit konstanter Geschwindigkeit bewegt und der Räuber immer noch schneller wird, entkommt der Räuber, sodass Sie einen Wahrheitswert ausgeben. Wenn jedoch die Geschwindigkeit des Polizisten gewesen wäre 9
...
C.............................R..................................
.........C.....................R.................................
..................C..............R...............................
...........................C........R............................
....................................C...R........................
.............................................X...................
... dann holt der Polizist den Räuber ein, bevor der Räuber X
entkommen kann (markiert durch ), und Sie geben einen falschen Wert aus.
Deine Aufgabe
Bei drei Eingaben - der Geschwindigkeit des Polizisten, der Position des Räubers und der Beschleunigung des Räubers - wird bestimmt, ob der Räuber davonkommt oder nicht.
Regeln
- Der Bulle beginnt immer um
0
. - Alle Eingaben sind positive ganze Zahlen.
- Der Polizist fängt den Räuber, wenn die Position des Polizisten nach einem Häkchen größer oder gleich der Position des Räubers ist.
- Der Räuber entkommt, wenn er noch nicht erwischt wurde und seine Geschwindigkeit höher ist als die des Polizisten.
- Ihr Programm muss nach der Ausgabe beendet werden.
- Der Räuber beschleunigt, bevor er jede Zecke bewegt.
Testfälle
Cop Speed, Robber Position, Robber Acceleration -> Output
7, 30, 1 -> truthy
9, 30, 1 -> falsey
2, 1, 3 -> truthy
100, 100, 50 -> truthy
60, 60, 20 -> falsey
10, 1, 1 -> falsey
10, 50, 2 -> truthy
11, 50, 2 -> truthy
12, 50, 2 -> truthy
13, 50, 2 -> truthy
14, 50, 2 -> truthy
15, 50, 2 -> truthy
16, 50, 2 -> falsey
17, 50, 2 -> falsey
18, 50, 2 -> falsey
100, 451, 10 -> truthy
Referenz Python 3-Implementierung, die auch ein visuelles Element erstellt: Probieren Sie es online aus!
Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
quelle
robber acceleration, cop speed, robber position
stattdessen)?Antworten:
Gelee , 9 Bytes
Probieren Sie es online!
Port of Leaky Nuns Python 3 Antwort.
(vollständiges Programm) Ordnet die Argumente
acceleration, position, speed
.quelle
Python 3 , 29 Bytes
Probieren Sie es online!
Erläuterung
Die Cops Position zur Zeit
t
istst
.Die Position des Räubers zur Zeit
t
ista(t)(t+1)/2 + p
.Die vorzeichenbehaftete Entfernung vom Polizisten zum Räuber beträgt
(a/2)t^2 + (a/2-s)t + p
.Sie erreicht niemals Null, wenn die Diskriminante negativ ist, wobei die Diskriminante
(a/2 - s)^2 - 4(a/2)(p) = [(a-2s)^2-8ap]/4
dasselbe Vorzeichen hat wie(a-2s)^2-8ap
.quelle
(a/2)t^2 + (a/2-s)t + p = 0 -> 10t^2 - 50t + 61 = 0
? Zum Beispiel kommt der Räuber für 60, 61, 20 leicht davon (die Gleichungslösungen: 2.1 und 2.9 liegen beide zwischen 2 und 3).Japt , 13 Bytes
Online testen!
Erläuterung
U
,V
UndW
sind die impliziten Eingänge. ZuerstUo0W
erstellen wir den Bereich [0, W, 2 * W, ...], bis er erreicht istU
.x
dann summiert sich dies, was angibt, wie weit sich der Räuber bewegt, bevor er die Geschwindigkeit der Polizei erreicht. Wir nennen das r .Wie weit reist der Cop in dieser Zeit? Wir können dies mit U * (U // W - 1) berechnen , das in (U * U) // W - U umgeordnet werden kann . Wir nennen das c .
Nun zum letzten Schritt: Entkommt der Räuber? Alles, was wir hier tun müssen, ist zu überprüfen, ob c <r + V oder umgeordnet c - V <r ist .
quelle
Kubisch 61 Bytes
Probieren Sie es online!Dazu in TIO zu arbeiten, müssen Sie ersetzen
&
mit&1
aufgrund eines Fehlers im Interpreter.Dies ist ein schamloser Hafen der Antwort von Leaky Nun . Die Eingabe erfolgt in der Form
a s p
, woa
die Beschleunigung des Räubers,s
die Geschwindigkeit des Polizisten undp
die Position des Räubers angegeben sind.Wenn die Beschleunigung zu hoch ist, schlägt dies fehl. Ich weiß nicht, wie hoch die Beschleunigung sein wird, die dieses Programm unterstützt. aber ich weiß, dass sie nicht höher als 1260 ist . Der begrenzende Faktor ist, dass er die Beschleunigung im Würfel speichert und prüft, ob der Würfel gelöst ist, indem er nur prüft, ob die Summe der oberen Fläche 0 ist (eine unvollständige Prüfung). Es scheint für die Beschleunigung = 50 zu funktionieren, aber ich habe nicht getestet, wie hoch es werden kann.
Wie es funktioniert
quelle
6
in%6
und*6
können entfernt werden, da sie jetzt implizit aufgerufen werden können.Pyth , 11 Bytes
Dies nimmt sie in dieser Reihenfolge:
Robber Acceleration, Cop Speed, Robber Position
getrennt durch eine neue Zeile (wie in der Testsuite gezeigt).Test Suite oder Online testen !
quelle
Pyke , 14 Bytes
Port of Totalhuman's Python Antwort . Returns
1
für truthy und0
für falsy.Probieren Sie es hier aus!
Erläuterung
Pyke , 15 Bytes
Meine allererste Pyke-Antwort! Port meiner Pyth-Lösung , die von Leakys Python-Einreichung inspiriert ist . Returns
1
für truthy und0
für falsy.Probieren Sie es hier aus!
Erläuterung
quelle
Python 2 , 62 Bytes
Probieren Sie es online!
quelle
Ruby ,
292725 BytesProbieren Sie es online!
Ich bin von 29 auf 27 gekommen, weil ich die Idee hatte, beide Seiten mit 4 zu multiplizieren. (Leaky Nuns Python-Antwort)
Wurde von 27 auf 25 durch Entfernen von Parens um Lambda-Parameter (danke totalhuman)
quelle
hit
nachh
oder ähnlich umbenennen . Sie können möglicherweise auch einige Bytes speichern , indem von einem Verfahren auf ein proc ändern, wie folgt:->c,p,a{(c-a*0.5)**2<2*p*a}
collision
in Ihrem TIO-Link den richtigen Methodennamen angeben.c,p,a
.C # (.NET Core) , 33 Byte
Probieren Sie es online!
Ich habe das Gefühl, dass dies irgendwo anders ist, aber es besteht für alle Testfälle die Möglichkeit, dass es einfach keine Testfälle gibt, in denen der Cop den Räuber für eine einzige Zecke überholt, oder es könnte trotz meiner Vorbehalte einfach funktionieren.
quelle
Python 2 ,
313029 Bytes-1 Byte danke an Herrn Xcoder.
Gestartet als Hafen der Ruby-Antwort .
Probieren Sie es online!
quelle
.5
statt0.5
> _>a/2
verwendet Integer Division, könnte das schief gehen?Schnelle 3 , 55 Bytes
Beachten Sie, dass ich die Variable deklariert habe
t
weil der Ausdruck zu komplex wäre, um in angemessener Zeit gelöst zu werden (Swifts Fehler!).Test Suite.
oder 55 Bytes , exaktes Abschlussäquivalent (ich benötige den letzten Teil, da es sich um ein komplexes Konstrukt handelt):
Test Suite.
Schnelle 3 , 57 Bytes
Test Suite.
quelle
Python 2 , 30 Bytes
Probieren Sie es online! Der Polizist hat
c/a
Häkchen, in denen er den Räuber fangen kann, wonach er den Polizisten ausbeschleunigt hat. Beim ersten Tick gewinnt der Copc-a
am Räuber, beim letzten Tick nurc%a
. Somit ist die Summe, die der Cop gewinnen kann, das Produkt aus der Anzahl der Ticks und der durchschnittlichen Entfernung pro Tick. Dies wird einfach mit der anfänglichen Spur verglichen, die der Räuber hat.quelle
TI BASIC (Serie TI-83/84), 18 Byte
Noch ein Hafen von einflussreichen Ruby-Lösung itdoesntwork .
Ausführung
Die Eingabereihenfolge ist Cop-Geschwindigkeit, Räuberposition, Räuberbeschleunigung.
quelle
Retina , 79 Bytes
Probieren Sie es online! Erläuterung:
Eingabe in Unary konvertieren.
Machen Sie Platz für die Geschwindigkeit des Räubers.
Beschleunigen Sie den Räuber bei jedem Durchgang.
Bewegen Sie den Räuber vom Polizisten weg.
Bewegen Sie den Polizisten in Richtung des Räubers.
Hat der Cop den Räuber erwischt?
Beschleunigt der Räuber den Polizisten?
quelle
Rekursiva ,
1916 BytesProbieren Sie es online!
quelle