Un control de crucero tiene 3 opciones diferentes para mover el mango y establecer la velocidad con la que desea conducir.
- Hacia usted: Agrega 1 velocidad.
- Hacia arriba: aumenta la velocidad al siguiente múltiplo de 10 (por ejemplo, 20 -> 30, 32 -> 40)
- Hacia abajo: disminuye la velocidad al siguiente múltiplo de 10 (por ejemplo, 20 -> 10, 32 -> 30)
Entrada
- 2 enteros: el primero es la velocidad de inicio y el segundo es la velocidad deseada, tanto no negativa como en la forma que desee (matriz, dos argumentos, etc.)
Tarea
- Determine la forma óptima de usar el mango para alcanzar la velocidad deseada e imprima los movimientos en el orden correcto.
Reglas
- Si tiene la opción de tirar hacia usted y hacia arriba (como de 39 a 40), puede elegir cualquiera de las opciones, pero quédese con lo que elija para casos similares
- Puede usar 3 símbolos diferentes (preferiblemente visibles) para distinguir entre los movimientos en la salida (T, U y D, por ejemplo).
- Los símbolos pueden separarse con nuevas líneas, espacios, etc., pero no es necesario que sean
Aquí hay algunos casos de prueba:
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 -->
Este es el código de golf, por lo que gana la respuesta más corta en bytes.
code-golf
arithmetic
aTastyT0ast
fuente
fuente
Respuestas:
JavaScript (ES6),
918475 bytesGuardado 4 bytes gracias a @Neil
Usos
0
paraD
,1
paraT
y2
paraU
.fuente
(s/10+1|0)*10 == (s/10|0)*10+10 == s-s%10+10
.f(37,43)
cuál era2111
pero tu nuevo código vuelve111111
.Java,
144139Guardado 5 bytes gracias a Kevin.
Sin golf
fuente
int
variables para10
ys/10
puede acortarlo en 5 bytes: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);
Lote, 175 bytes
Bastante sencillo esta vez. Toma la entrada como parámetros de línea de comandos, que guarda en
s
yd
.e
sed
redondea al múltiplo anterior de 10. Sis
es mayor qued
, entonces obviamente debemos invocard
hasta ques
sea menor qued
. De lo contrario, debemos verificar sis
es menor quee
; Si es así, podemos invocaru
hasta que seas
iguale
. En este puntos
está ahora entree
yd
y podemos simplemente invocart
hasta llegard
. Miré losfor
bucles pero usan puntos finales inclusivos, por lo que se habrían vuelto demasiado detallados.fuente
Python, 76 bytes
fuente
min(b%10,(b-a)%99)
no siempre funciona, por ejemplo(a,b)=(132,33)
b:
C, 156 bytes
Sin golf:
fuente