Pomyśl o drodze jako o linii liczbowej, rozpoczynającej się 0
i kontynuowanej w nieskończoność:
.................................................................
Na drodze są dwa samochody: C
i R
. C
to policjant, który próbuje złapać R
, rabuś. C
zaczyna się o 0
i R
zaczyna się gdzieś w drodze:
C.............................R..................................
Policjant już się rusza - goni złodzieja. Ma stałą prędkość. Rabuś właśnie wskoczył do swojego samochodu. On przyspiesza. Z każdym przyspieszeniem prędkość złodzieja wzrasta o jego przyspieszenie.
Powiedzmy, że prędkość gliniarza jest przyspieszona 7
przez złodzieja 1
. Jeśli złodziej zaczyna od 30
, tak wyglądałaby droga dla każdego tyknięcia:
C.............................R..................................
.......C.......................R.................................
..............C..................R...............................
.....................C..............R............................
............................C...........R........................
...................................C.........R...................
..........................................C........R.............
.................................................C........R......
Po ostatnim tiku powyżej prędkość złodzieja jest równa prędkości gliniarza, a on wciąż jest na czele. Ponieważ glina porusza się ze stałą prędkością, a rabuś wciąż przyspiesza, rabuś ucieka, więc podajesz prawdziwą wartość. Gdyby jednak prędkość gliny była 9
...
C.............................R..................................
.........C.....................R.................................
..................C..............R...............................
...........................C........R............................
....................................C...R........................
.............................................X...................
... wtedy gliniarz łapie rabusia, zanim rabuś zdoła uciec (oznaczony przez X
), więc wyślesz wartość falsey.
Twoje zadanie
Biorąc pod uwagę trzy dane wejściowe - prędkość policjanta, pozycję złodzieja i przyspieszenie złodzieja - określają, czy złodziej ucieknie.
Zasady
- Policjant zawsze zaczyna się od
0
. - Wszystkie dane wejściowe będą dodatnimi liczbami całkowitymi.
- Policjant łapie rabusia, jeśli po jakimkolwiek kleszczu pozycja policjanta jest większa lub równa pozycji rabusia.
- Rabuś ucieka, gdy nie został jeszcze złapany, a jego prędkość jest większa niż gliny.
- Twój program musi zakończyć się po wyjściu.
- Rabuś przyspiesza, zanim poruszy każdym tyknięciem.
Przypadki testowe
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
Odwołaj się do implementacji języka Python 3, która tworzy również grafikę: Wypróbuj online!
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
źródło
robber acceleration, cop speed, robber position
zamiast tego)?Odpowiedzi:
Galaretka , 9 bajtów
Wypróbuj online!
Odpowiedź Portu Dziurawej Zakonnicy w Python 3.
(pełny program) Porządkuje argumenty
acceleration, position, speed
.źródło
Python 3 , 29 bajtów
Wypróbuj online!
Wyjaśnienie
Pozycja policjanta w czasie
t
tost
.Pozycja rabusia w tym momencie
t
toa(t)(t+1)/2 + p
.Podpisana odległość od policjanta do rabusia to
(a/2)t^2 + (a/2-s)t + p
.Nigdy nie osiąga zera, jeśli dyskryminujący jest ujemny, a dyskryminujący jest
(a/2 - s)^2 - 4(a/2)(p) = [(a-2s)^2-8ap]/4
tym samym znakiem, co(a-2s)^2-8ap
.źródło
(a/2)t^2 + (a/2-s)t + p = 0 -> 10t^2 - 50t + 61 = 0
? Na przykład dla 60, 61, 20 złodziej łatwo ucieka (rozwiązania równań: 2.1 i 2.9 są zarówno między 2 a 3).Japt , 13 bajtów
Przetestuj online!
Wyjaśnienie
U
,V
iW
są niejawnymi danymi wejściowymi. NajpierwUo0W
tworzymy zakres [0, W, 2 * W, ...], aż osiągnieU
.x
następnie sumuje to, co określa, jak daleko rabuś przebywa przed osiągnięciem prędkości policjanta. Nazwiemy to r .Jak daleko podróżuje policjant w tym czasie? Można obliczyć tego za pomocą U * (U // W - 1) , który można przekształcić do (U * U) W // - u . Nazwiemy to c .
Teraz ostatni krok: czy złodziej ucieka? Wszystko, co musimy tutaj zrobić, to sprawdzić, czy c <r + V lub przestawione, c - V <r .
źródło
Sześciennie , 61 bajtów
Wypróbuj online! Aby działało to w TIO, może być konieczne zastąpienie go
&
z&1
powodu błędu w tłumaczu.To bezwstydny port odpowiedzi Dziurawej Zakonnicy . Wejście jest w formie
a s p
, gdziea
jest przyspieszenie rabuś za,s
jest szybkość policjanta, ap
to za pozycja rabuś.Jeśli przyspieszenie jest zbyt duże, to się nie powiedzie. Nie wiem, jak wysokie jest przyspieszenie tego programu, ale wiem, że nie jest wyższe niż 1260 . Czynnikiem ograniczającym jest to, że przechowuje przyspieszenie w kostce i sprawdza, czy kostka jest rozwiązana, sprawdzając tylko, czy suma górnej powierzchni wynosi 0 (kontrola niekompletna). Wydaje się, że działa na przyspieszenie = 50, ale nie testowałem, aby zobaczyć, jak wysoko może wzrosnąć.
Jak to działa
źródło
6
W%6
i*6
mogą być usunięte, ponieważ teraz można nazwać w sposób dorozumiany.Pyth , 11 bajtów
To bierze je w następującej kolejności:
Robber Acceleration, Cop Speed, Robber Position
oddzielone znakiem nowej linii (jak pokazano w pakiecie testowym).Przetestuj pakiet lub wypróbuj online!
źródło
Pyke , 14 bajtów
Port odpowiedzi Pythona całkowicie ludzki . Zwraca
1
za prawdę i0
za fałsz.Wypróbuj tutaj!
Wyjaśnienie
Pyke , 15 bajtów
Moja pierwsza odpowiedź Pyke! Port mojego rozwiązania Pyth , zainspirowanego zgłoszeniem Leaky's Python . Zwraca
1
za prawdę i0
za fałsz.Wypróbuj tutaj!
Wyjaśnienie
źródło
Python 2 , 62 bajty
Wypróbuj online!
źródło
Ruby ,
292725 bajtówWypróbuj online!
Dostałem od 29 do 27, kradnąc pomysł pomnożenia obu stron przez 4. (odpowiedź python Leaky Nun)
Dostałem od 27 do 25, usuwając pareny wokół parametrów lambda (dzięki całkowicie ludzki)
źródło
hit
nah
lub podobną. Możesz także być w stanie zaoszczędzić niektóre bajty, zmieniając metodę na proc, na przykład:->c,p,a{(c-a*0.5)**2<2*p*a}
collision
w łączu TIO poprawną nazwę metody.c,p,a
.C # (.NET Core) , 33 bajty
Wypróbuj online!
Wydaje mi się, że to gdzieś jest wyłączone, ale to pasuje do wszystkich przypadków testowych, więc możliwe jest, że po prostu nie ma żadnych przypadków testowych, w których policjant wyprzedziłby rabusia dla jednego tiku, lub może po prostu zadziałać pomimo moich zastrzeżeń.
źródło
Python 2 ,
313029 bajtów-1 bajt dzięki Mr. Xcoder.
Zaczęło się jako port odpowiedzi Ruby .
Wypróbuj online!
źródło
.5
zamiast0.5
> _>a/2
używa podziału na liczby całkowite, czy to może pójść nie tak?Swift 3 , 55 bajtów
Zauważ, że zadeklarowałem zmienną,
t
ponieważ wyrażenie byłoby zbyt złożone, aby w przeciwnym razie można je było rozwiązać w rozsądnym czasie (wina Swift!).Pakiet testowy.
lub 55 bajtów , dokładny odpowiednik zamknięcia (potrzebuję ostatniej części, ponieważ jest to złożona konstrukcja):
Pakiet testowy.
Swift 3 , 57 bajtów
Pakiet testowy.
źródło
Python 2 , 30 bajtów
Wypróbuj online! Policjant ma
c/a
tyknięcia, w których można złapać rabusia, po czym przyspieszył policjanta. Przy pierwszym tyknięciu policjant zyskujec-a
rabusia, podczas gdy na ostatnim tyka tylko zyskujec%a
. Zatem suma, jaką policjant może zyskać, jest iloczynem liczby tyknięć i średniej odległości na tyknięcie. Jest to po prostu porównywane z początkowym prowadzeniem złodzieja.źródło
TI BASIC (seria TI-83/84), 18 bajtów
Jeszcze inny port itdoesntwork „s wpływowego rozwiązanie Ruby .
Wykonanie
Kolejność wprowadzania to prędkość policjanta, pozycja złodzieja, przyspieszenie złodzieja.
źródło
Siatkówka , 79 bajtów
Wypróbuj online! Wyjaśnienie:
Konwertuj dane wejściowe na jednoargumentowe.
Zrób miejsce dla prędkości rabusia.
Przyspiesz złodzieja przy każdym przejściu.
Odsuń złodzieja od gliny.
Przesuń policjanta w kierunku rabusia.
Czy policjant złapał rabusia?
Czy złodziej wyprzedza gliniarza?
źródło
Recursiva ,
1916 bajtówWypróbuj online!
źródło