Круиз-контроль имеет 3 различных варианта перемещения ручки, чтобы установить скорость, с которой вы хотите двигаться.
- Навстречу вам: добавляет 1 скорость.
- Вверх: увеличивает скорость до следующего кратного 10 (например, 20 -> 30, 32 -> 40)
- Вниз: уменьшает скорость до следующего кратного 10 (например, 20 -> 10, 32 -> 30)
вход
- 2 целых числа: первое - начальная скорость, а второе - желаемая скорость, как неотрицательная, так и в любой форме (массив, два аргумента и т. Д.)
задача
- Определите оптимальный способ использования ручки для достижения желаемой скорости и распечатайте движения в правильном порядке.
правила
- Если у вас есть выбор между тягой к себе и движением вверх (например, от 39 до 40), вы можете выбрать любой вариант, но оставайтесь с тем, что вы выберете для подобных случаев.
- Вы можете использовать любые 3 различных (предпочтительно видимых) символа, чтобы различать ходы на выходе (например, T, U и D).
- Символы могут быть разделены новыми строками, пробелами и т. Д., Но не обязательно
Вот несколько тестов:
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 -->
Это код-гольф, поэтому выигрывает самый короткий ответ в байтах.
code-golf
arithmetic
aTastyT0ast
источник
источник
Ответы:
JavaScript (ES6),
918475 байтСохранено 4 байта благодаря @Neil
Использует
0
дляD
,1
дляT
и2
дляU
.источник
(s/10+1|0)*10 == (s/10|0)*10+10 == s-s%10+10
,f(37,43)
что было,2111
но ваш новый код возвращается111111
.Ява,
144139Сохранено 5 байтов благодаря Кевину.
Ungolfed
источник
int
переменные для10
иs/10
вы можете сократить его на 5 байтов: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);
Пакет, 175 байтов
На этот раз довольно просто. Принимает ввод как параметры командной строки, которые он сохраняет в
s
иd
.e
этоd
округленный вниз к предыдущему кратному 10. Еслиs
большеd
, то , очевидно , необходимо вызватьd
доs
становится нижеd
. В противном случае нам нужно проверить,s
меньше лиe
; если это так, мы можем вызватьu
до тех пор, пока не будетs
равенe
. В этот моментs
сейчас междуe
иd
мы можем просто вызывать,t
пока не достигнемd
. Я изучилfor
циклы, но они используют инклюзивные конечные точки, поэтому стали бы слишком многословными.источник
Python, 76 байт
источник
min(b%10,(b-a)%99)
например, не всегда работает(a,b)=(132,33)
b:
C 156 байт
Ungolfed:
источник