Un régulateur de vitesse a 3 options différentes pour déplacer la poignée afin de régler la vitesse avec laquelle vous voulez conduire.
- Vers vous: ajoute 1 vitesse.
- Vers le haut: augmente la vitesse au multiple de 10 suivant (par exemple 20 -> 30, 32 -> 40)
- Vers le bas: diminue la vitesse au multiple de 10 suivant (par exemple 20 -> 10, 32 -> 30)
Contribution
- 2 entiers: le premier est la vitesse de départ et le second est la vitesse souhaitée, à la fois non négative et sous la forme que vous souhaitez (tableau, deux arguments, etc.)
Tâche
- Déterminez la manière optimale d'utiliser la poignée pour atteindre la vitesse souhaitée et imprimez les mouvements dans le bon ordre.
Règles
- Si vous avez le choix entre tirer vers vous et monter (comme de 39 à 40), vous pouvez choisir l'une ou l'autre option, mais restez avec ce que vous choisissez pour des cas similaires
- Vous pouvez utiliser 3 symboles différents (de préférence visibles) pour distinguer les mouvements dans la sortie (T, U et D par exemple).
- Les symboles peuvent être séparés par de nouvelles lignes, espaces, etc. mais ne doivent pas être
Voici quelques cas de test:
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 -->
Il s'agit de code-golf donc la réponse la plus courte en octets l'emporte.
code-golf
arithmetic
aTastyT0ast
la source
la source
Réponses:
JavaScript (ES6),
918475 octets4 octets enregistrés grâce à @Neil
Utilise
0
pourD
,1
pourT
et2
pourU
.la source
(s/10+1|0)*10 == (s/10|0)*10+10 == s-s%10+10
.f(37,43)
qui était ,2111
mais vos nouveaux retours de code111111
.Java,
144139Enregistré 5 octets grâce à Kevin.
Non golfé
la source
int
variables pour10
ets/10
vous pouvez le raccourcir de 5 octets: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);
Lot, 175 octets
Assez simple cette fois. Prend l'entrée en tant que paramètres de ligne de commande, qu'il enregistre dans
s
etd
.e
estd
arrondi au multiple de 10. Sis
est supérieur àd
, alors nous devons évidemment invoquerd
jusqu'à ce ques
devienne inférieur àd
. Sinon, nous devons vérifier si elles
est inférieure àe
; si c'est le cas, nous pouvons invoqueru
jusqu'à ce ques
égale
. À ce stades
est maintenant entree
etd
et nous pouvons simplement invoquert
jusqu'à ce que nous atteignionsd
. J'ai examiné lesfor
boucles mais elles utilisent des points de terminaison inclusifs, elles seraient donc devenues trop verbeuses.la source
Python, 76 octets
la source
min(b%10,(b-a)%99)
ne fonctionnera pas toujours, par exemple(a,b)=(132,33)
b:
C, 156 octets
Non golfé:
la source