Связанный: Запрограммируйте мою микроволновую печь и Сгенерируйте ленивые ценности .
Мой коллега настолько ленив, что даже не пытается пошевелить пальцем при программировании микроволновой печи. (Это на самом деле правда!)
Помогите ему найти микроволновый вход, который дает время, ближайшее к тому, что он хочет, но где все цифры одинаковы. Если два входа дают одинаковую разницу во времени с требуемым временем, выберите тот, который содержит меньше цифр. Если у обоих одинаковое количество цифр, выберите меньшее, чтобы ему не пришлось ждать так долго.
Ввод - это целое число, которое вводит перфекционист, например 430
, 4 минуты и 30 секунд, 100
а 60
каждый - 1 минута. Это будет больше 0 и не будет превышать 9999.
Выходные данные должны быть целыми числами, например 444
, 4 минуты и 44 секунды и 55
55 секунд.
И ввод, и вывод могут быть в простых секундах (без минут), если общее время меньше 1 минуты и 40 секунд.
Это код-гольф , поэтому ваш код должен быть максимально коротким.
Тестовые случаи:
30 → 33
60 → 55
70 → 111
90 → 88
100 → 55
101 → 66
120 → 77
130 → 88
200 → 99
201 → 222
500 → 444
700 → 666
1000 → 888
1055 → 999
1056 → 1111
1090 → 1111
Ответы:
Желе, 26 байт
Объяснение:
Попробуйте онлайн!
источник
JavaScript (ES6), 112 байт
Использует вспомогательную функцию,
c
которая в пять раз вычисляет фактическое количество прошедших секунд.источник
Дьялог АПЛ , 37 байт
⍳4
1 2 3 4⎕D
«0123456789»∘./⍨
таблица повторений (как таблица умножения, но где каждая ячейка содержит B повторений A вместо A × B),
превращает таблицу в список строк,⍎¨
превращает каждую строку в число (теперь у нас есть список из всех возможных результаты.){
…}
функция, в которой аргумент представлен⍵
⎕⍵
предшествующим аргументом с запросом ввода(
…)¨
применяется к каждому из двух (аргумент и список) ...0 100∘⊤
преобразовать в base-10060⊥
преобразовать из base-60-/
вычислить разницу между двумя|
абсолютными⊃
список извлечения значений (потому что-/
инкапсулировал его результат)⍋
порядок сортировки (не сортирует, возвращает только порядок, в котором необходимо разместить аргументы для достижения возрастающего порядка. Если два элемента равны, они остаются в текущем порядке. Так как в нашем списке есть элементы увеличивающейся длины, это заботится о связях.)⊃
первый, то есть тот, который имеет наименьшее абсолютное отличие от входных данных,⍵⊃⍨
берет этот элемент из списка аргументов (списка возможных результатов)Спасибо коллеге за то, что он сбрил один байт.
Примечание: у меня не было никакого решения на момент публикации ОП.
источник