Tempomat ma 3 różne opcje przesuwania dźwigni, aby ustawić prędkość, z którą chcesz jechać.
- W stronę ciebie: Dodaje 1 prędkość.
- W górę: Zwiększa prędkość do następnej wielokrotności 10 (np. 20 -> 30, 32 -> 40)
- W dół: zmniejsza prędkość do następnej wielokrotności 10 (np. 20 -> 10, 32 -> 30)
Wejście
- 2 liczby całkowite: pierwsza to prędkość początkowa, a druga to pożądana prędkość, zarówno nieujemna, jak i w dowolnej formie (tablica, dwa argumenty itp.)
Zadanie
- Określ optymalny sposób użycia uchwytu do osiągnięcia żądanej prędkości i wydrukuj ruchy we właściwej kolejności.
Zasady
- Jeśli masz wybór między przyciągnięciem do siebie a przejściem w górę (np. Od 39 do 40), możesz wybrać dowolną opcję, ale pozostań przy tym, co wybierzesz w podobnych przypadkach
- Możesz użyć dowolnych 3 różnych (najlepiej widocznych) symboli, aby rozróżnić ruchy na wyjściu (na przykład T, U i D).
- Symbole mogą być oddzielone nowymi liniami, spacjami itp., Ale nie muszą
Oto kilka przypadków testowych:
start speed, desired speed --> output
30, 40 --> U
30, 43 --> UTTT
43, 30 --> DD
51, 39 --> DDDTTTTTTTTT
29, 30 --> T or U
29, 50 --> TUU or UUU
12, 12 -->
To jest golf golfowy, więc wygrywa najkrótsza odpowiedź w bajtach.
code-golf
arithmetic
aTastyT0ast
źródło
źródło
Odpowiedzi:
JavaScript (ES6),
918475 bajtówZaoszczędź 4 bajty dzięki @Neil
Używa
0
doD
,1
doT
i2
doU
.źródło
(s/10+1|0)*10 == (s/10|0)*10+10 == s-s%10+10
.f(37,43)
który był2111
jednak nowych powraca kod111111
.Java,
144139Zaoszczędził 5 bajtów dzięki Kevinowi.
Nie golfił
źródło
int
zmienne dla10
is/10
można ją skrócić o 5 bajtów:void o(int s,int e){int t=10,x=s/t;System.out.print(s>e?"D":s<e?x<e/t?"U":"T":"");if(s!=e)o(s>e?x*t-(s%t<1?t:0):s<e?x<e/t?(x+1)*t:s+1:0,e);
Partia, 175 bajtów
Tym razem dość proste. Pobiera dane wejściowe jako parametry wiersza polecenia, w których zapisuje
s
id
.e
jestd
zaokrąglana w dół do poprzedniej wielokrotności 10. Jeślis
jest większa niżd
, wtedy oczywiście musimy wywoływać,d
aż stanies
się niższa niżd
. W przeciwnym razie musimy sprawdzić, czys
jest niższy niże
; jeśli tak, możemy wywoływać,u
dopóki nie będzies
równye
. W tym miejscus
jest teraz międzye
ad
i możemy po prostu wywołaćt
aż dotrzemyd
. Zajrzałem dofor
pętli, ale używają one włączających punktów końcowych, więc stałoby się zbyt szczegółowe.źródło
Python, 76 bajtów
źródło
min(b%10,(b-a)%99)
nie zawsze będzie działać, na przykład(a,b)=(132,33)
b:
C, 156 bajtów
Nie golfowany:
źródło