Я очень ленив, поэтому я стараюсь всегда программировать микроволновую печь с минимальным количеством нажатий кнопок . Моя микроволновая печь имеет следующие кнопки:
- Кнопка «минута плюс», которая может быть нажата только первой и подразумевает «запуск». Его можно нажимать несколько раз в течение нескольких минут, но это не добавит минуты к введенному вручную времени. Выход
+
- Набор из 0-9 кнопок. Время ввода MMSS (т. Е. «130» означает 1 минуту 30 секунд). Секунды могут варьироваться от 0 до 99. Таким образом, «130» и «90» являются эквивалентными записями. Очевидно, что каждая минута составляет 60 секунд, даже если секундная часть записи превышает 59. Вывод
0
..9
- Кнопка «Пуск», которую нужно нажать, чтобы запустить микроволновую печь, если время вводится вручную. Выход
S
В моих пакетах с едой время указывается в ММ: СС, поэтому программа должна принять эти данные.
Примеры
- 1:00
+
(помните, «минута плюс» подразумевает начало) - 1:01
61S
(секунды могут превышать 59, но «минута плюс» не работает в сочетании с цифрами - я думаю, что это ошибка дизайна в моей микроволновой печи) - 9:00
900S
(короче+++++++++
)
code-challenge
optimization
Бен Джексон
источник
источник
400S
или++++
?++++
выигрывает. :)888S
короче928S
, но900S
короче860S
? Мне нужна точная геометрия ваших кнопок и каждого из их положений.Ответы:
APL
У APL плохая репутация, что она нечитаема, что совсем не так, если не играть в гольф.
Правила:
источник
JavaScript
источник
Perl
соответствует требованиям,
но это не так, как я бы ввел кнопки (например, "860S" против "900S")обрабатывает ровно 60 секунд, как особый случайВыход
источник
Рубин
Примечания:
ruby program-my-microwave-oven.rb
и оцените юнит-тест.ruby program-my-microwave-oven.rb 10:00
и он пишет960S
Несколько замечаний о правилах (и моей интерпретации):
10:00
IS960S
(9 минут и 60 секунд -> 10 минут).10:39
IS999S
(9 минут и 99 секунд -> 10 минут и 39 секунд).4:00
этого предпочитает++++
(меньше движений пальцев)источник