Um controle de cruzeiro tem 3 opções diferentes para mover a alavanca e definir a velocidade com a qual você deseja dirigir.
- Em sua direção: Adiciona 1 velocidade.
- Para cima: aumenta a velocidade para o próximo múltiplo de 10 (por exemplo, 20 -> 30, 32 -> 40)
- Para baixo: diminui a velocidade para o próximo múltiplo de 10 (por exemplo, 20 -> 10, 32 -> 30)
Entrada
- 2 números inteiros: o primeiro é a velocidade inicial e o segundo é a velocidade desejada, não-negativa e da forma que você desejar (matriz, dois argumentos etc.)
Tarefa
- Determine a maneira ideal de usar a alça para atingir a velocidade desejada e imprima os movimentos na ordem correta.
Regras
- Se você tiver a opção entre puxar em sua direção e subir (como de 39 a 40), poderá escolher qualquer uma das opções, mas fique com o que escolher para casos semelhantes
- Você pode usar quaisquer três símbolos diferentes (de preferência visíveis) para distinguir entre os movimentos na saída (T, U e D, por exemplo).
- Os símbolos podem ser separados por novas linhas, espaços, etc., mas não precisam ser
Aqui estão alguns casos de teste:
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 -->
Isso é código-golfe, então a resposta mais curta em bytes vence.
code-golf
arithmetic
aTastyT0ast
fonte
fonte
Respostas:
JavaScript (ES6),
918475 bytesGuardado 4 bytes graças a @Neil
Usa
0
paraD
,1
paraT
e2
paraU
.fonte
(s/10+1|0)*10 == (s/10|0)*10+10 == s-s%10+10
.f(37,43)
que era,2111
mas seu novo código retorna111111
.Java,
144139Economizou 5 bytes graças a Kevin.
Ungolfed
fonte
int
10
s/10
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 direto desta vez. Recebe a entrada como parâmetros da linha de comando, que salva em
s
ed
.e
éd
arredondado para o múltiplo anterior de 10. Ses
for maior qued
, então obviamente precisamos chamard
até ques
seja menor qued
. Caso contrário, precisamos verificar ses
é menor quee
; Nesse caso, podemos invocaru
atés
iguale
. Neste pontos
é agora entree
ed
e podemos simplesmente invocart
até chegarmosd
. Eu olhei parafor
loops, mas eles usam pontos de extremidade inclusivos para que se tornassem muito detalhados.fonte
Python, 76 bytes
fonte
min(b%10,(b-a)%99)
wont sempre trabalho, por exemplo(a,b)=(132,33)
b:
C, 156 bytes
Ungolfed:
fonte