Ein Tempomat verfügt über 3 verschiedene Optionen zum Bewegen des Griffs, um die Geschwindigkeit einzustellen, mit der Sie fahren möchten.
- Auf dich zu: Fügt 1 Geschwindigkeit hinzu.
- Aufwärts: Erhöht die Geschwindigkeit auf das nächste Vielfache von 10 (z. B. 20 -> 30, 32 -> 40)
- Abwärts: Verringert die Geschwindigkeit auf das nächste Vielfache von 10 (z. B. 20 -> 10, 32 -> 30).
Eingang
- 2 Ganzzahlen: Die erste ist die Startgeschwindigkeit und die zweite ist Ihre gewünschte Geschwindigkeit, sowohl nicht negativ als auch in beliebiger Form (Array, zwei Argumente usw.)
Aufgabe
- Bestimmen Sie die optimale Verwendung des Griffs, um die gewünschte Geschwindigkeit zu erreichen, und drucken Sie die Bewegungen in der richtigen Reihenfolge aus.
Regeln
- Wenn Sie die Wahl haben, ob Sie zu sich ziehen oder nach oben gehen möchten (z. B. von 39 bis 40), können Sie eine der beiden Optionen wählen, aber bei ähnlichen Fällen bei allem bleiben, was Sie wählen
- Sie können 3 verschiedene (vorzugsweise sichtbare) Symbole verwenden, um zwischen den Bewegungen in der Ausgabe zu unterscheiden (z. B. T, U und D).
- Die Symbole können durch neue Linien, Leerzeichen usw. getrennt werden, müssen es aber nicht sein
Hier einige Testfälle:
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 -->
Dies ist Code-Golf, also gewinnt die kürzeste Antwort in Bytes.
code-golf
arithmetic
aTastyT0ast
quelle
quelle
Antworten:
JavaScript (ES6),
918475 Byte4 Bytes dank @Neil gespeichert
Verwendet
0
fürD
,1
fürT
und2
fürU
.quelle
(s/10+1|0)*10 == (s/10|0)*10+10 == s-s%10+10
.f(37,43)
was war,2111
aber Ihr neuer Code kehrt zurück111111
.Java,
1441395 Bytes dank Kevin gespeichert.
Ungolfed
quelle
int
Variablen für10
unds/10
Sie können es um 5 Bytes verkürzen: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);
Stapel, 175 Bytes
Diesmal ziemlich unkompliziert. Übernimmt Eingaben als Befehlszeilenparameter, die in
s
und gespeichert werdend
.e
wirdd
auf das vorherige Vielfache von 10 abgerundet. Wenns
größer als istd
, müssen wir offensichtlich aufrufen,d
bis ess
kleiner als wirdd
. Andernfalls müssen wir prüfen, obs
niedriger als iste
; Wenn ja, können wir aufrufen,u
biss
gleich iste
. An diesem Punkts
liegt nun zwischene
undd
und wir können einfach aufrufen,t
bis wir erreichend
. Ich habe mirfor
Schleifen angesehen, aber sie verwenden inklusive Endpunkte, wären also zu ausführlich geworden.quelle
Python, 76 Bytes
quelle
min(b%10,(b-a)%99)
wird zum Beispiel nicht immer funktionieren(a,b)=(132,33)
b:
C 156 Bytes
Ungolfed:
quelle