Представьте себе следующие 24-часовые часы, которыми можно управлять с помощью клавиш со стрелками:
╔══╗ ┌──┐
║00║:│00│
╚══╝ └──┘
HH mm
Двойное нажатие стрелки вверх ( ↑↑
) увеличит текущее значение часа:
╔══╗ ┌──┐
║02║:│00│
╚══╝ └──┘
HH mm
Нажатие стрелки вправо ( →
) сфокусирует другой вход.
┌──┐ ╔══╗
│02│:║00║
└──┘ ╚══╝
HH mm
Нажатие стрелки вниз трижды ( ↓↓↓
) теперь уменьшит этот ввод.
┌──┐ ╔══╗
│02│:║57║
└──┘ ╚══╝
HH mm
Коротко говоря:
- Стрелка вверх (
↑
) увеличивает текущий активный вход. - Стрелка вниз (
↓
) уменьшит активный вход. - Стрелка вправо (
→
) переместит фокус на правый вход. - Стрелка влево (
←
) переместит фокус на левый вход. - Движение вверх и вниз зациклится, как и ожидалось, для ввода времени.
- Левое и правое движение не вращаются вокруг.
Соревнование
Часы запускаются 00:00
с активным входом часа (см. Первую схему). Учитывая список команд ввода, выведите полученное время в HH:mm
формате.
Ввод может быть либо строкой, либо списком (или вашим языковым эквивалентом), где разные направления ввода могут быть одним из следующих параметров:
↑↓←→
udlr
^v<>
- фактические нажатия клавиш со стрелками, если ваша программа имеет графический интерфейс
Применяются стандартные лазейки.
Контрольные примеры
↑↑→↓↓↓ = 02:57
↓→↑←↑→↓ = 00:00
↓→→↓ = 23:59
←←←←→↑ = 00:01
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓→↓ = 23:59
0123
), значительно упростит задачу в некоторых языках, но не принесет пользы другим.Ответы:
HTML в Google Chrome 67 на китайском (упрощенный), 39 байт
Chrome показывает разные компоненты интерфейса на другом языке. Даже простой ввод времени: AM / PM будет отображаться, если вы используете английский (США). Если вы хотите проверить это, изменив язык вашего Chrome. Не думайте о том, как изменить это обратно.
источник
AM/PM
мнеC (gcc) ,
117107 байтовПопробуйте онлайн!
источник
t,i,m[8];e(char*_){for(*m=i=2[m]=0;t=*_++;t<63?i=t%4:(i[m]+=t&8?1:119));printf("%02d:%02d",*m%24,2[m]%60);}
Попробуйте онлайн!Stax ,
36353332 байтаЗапустите и отладьте его
Использует
lrud
.Объяснение:
источник
Python 2 , 105 байт
Попробуйте онлайн!
источник
JavaScript (Node.js) , 103 байта
Принимает ввод в виде строки, используя
udlr
.Попробуйте онлайн!
источник
C # (.NET Core) ,
149132 байтаПопробуйте онлайн!
Использование
^v<>
.Это заставило меня понять, что оператор по модулю в C # не работает должным образом, потому что в C #
-1 % 60 = -1
, поэтому мне нужно выполнить эту странную операцию в конце.источник
Lua (каркас love2d),
311308 байтБезрукавная версия:
Вероятно, все еще не на 100% легко читается, потому что все if заменяются на триальное утверждение (..and .. или) :)
если он запущен в main.lua с любовью, то появится всплывающее окно, и вы можете нажать клавиши со стрелками, чтобы изменить числа
источник
MATL ,
575655 байтПопробуйте онлайн!
Представляет часы и минуты с использованием комплексных чисел, причем действительная часть представляет собой часы, а мнимая часть - минуты.
С комментариями:
источник
PHP ,
145134133 байта(-11 байт больше в гольф)
(-1 байт, используя метод цикла Давида )
Чтобы запустить это:
Пример:
Или попробуйте онлайн!
Заметки:
error_reporting=0
опция используется, чтобы не выводить предупреждения.u d l r
источник
JavaScript,
104103 байтПринимает ввод как массив символов, используя
<>^v
.Попробуйте онлайн
источник
Haskell, 236 байт
f
является основной функцией и имеет типString -> String
:По сути
u
иv
являются взаимно рекурсивными функциями типаInteger -> Integer -> String -> String
. Они берут час, минуту и список символов в наборе{v,^,<,>}
и возвращают строку времени.u
действует так, как будто выделен часовой циферблат, рекурсивно вызываяu
если заголовок списка находится{v,^}
, иv
если заголовок списка находится в{<,>}
.v
похоже, но для минутного набора.Все остальное просто сохранение персонажей.
источник
Lua , 132 байта
Попробуйте онлайн!
объяснение
Это анонимная функция (способ ее использования показан по ссылке).
источник
HH:mm
формате, а не в таблицеJava 8, 121 байт
Порт Джонатана Фреха C ответ . Принимает
^v<>
. Попробуйте это онлайн здесь .источник
Желе , 36 байт
Я считаю, что
O%5;4ṣ3œṡ€4Z%3’§§%"“ð<‘DŻ€ṫ€-j”:
должно работать на 32, но,œṡ
похоже, в настоящее время есть ошибка .Полная программа, печатающая результат в STDOUT (в виде монадической ссылки фактически возвращает смешанный список целых чисел (хотя и однозначных) и символов (
:
).Использует
udlr
опцию для ввода.Попробуйте онлайн! Или посмотрите тестовый набор .
Как?
источник
APL (Dyalog Classic) ,
9784 байтаПопробуйте онлайн!
требует
⎕IO←1
источник
QBasic , 229 байт
Скрипт, который принимает ввод как нажатия клавиш и выводит на консоль.
Примечание: терминал
"
включен только для подсветки синтаксиса и не вносит вклад в bytecountкомментарии
источник
(m+y)
?m
было несколько минут по какой-то причине ... Я вижу вашу закомментированную версию более читабельным.Powershell,
109103 байт-6 байт благодаря AdmBorkBork
Тестовый скрипт:
Выход:
объяснение
Основная идея заключается в использовании a
[hashtable]
, которыеkeys
являются управляющими командами иvalues
являются скриптовыми блоками. Код выполняет скрипт-блок для каждой команды из аргументов.источник
$i=0
, приведя свой индекс массива, например,$t[+$i]
чтобы сохранить несколько байтов. Попробуйте онлайн!Perl 6 ,
101 91 8986 байтПопробуйте онлайн!
Блок анонимного кода, который принимает строку
uldr
символов и возвращает в заданном форматеисточник
perl -F // -E, 72 байта
источник
Python, 120 байт
источник
ld
илиrru
заставитi
выйти из диапазона (0,1) иo[i]
будет получен доступ позже?unput()
. Из требований я понял, что действия L и R никогда не будут повторяться (то есть, нетLL
)lll
не то же самое, что иr
. Имеяll
илиrr
является допустимым вводом, это также в тестовых примерах, см. Третий пример.23:59
. Попробуйте онлайн!Haskell , 186 байт
Попробуйте онлайн!
источник
R
368355 байтОпределенно не лучший подход, но работает.
Функциональность: Запустите функцию, введите каждую букву, чтобы (в / де) согнуть или переместить влево / вправо, ввод «s» завершает «игру». Подвох в том, что он будет принимать одно и только одно письмо за раз.
-13 байт Консолидировал некоторые значения в одну строку, переписал T как F вместо использования break, нашел несколько пробелов для удаления и вместо этого строку, сохраненную в переменной
Я также редактирую альтернативный формат, чтобы принять строку R и / или вектор, опубликую на следующей неделе.
источник
SmileBASIC, 123 байта
BUTTON()
возвращает целое число, где каждый бит представляет кнопкуBUTTON(2)
возвращает только те кнопки, которые были только что нажаты (не удерживаются)WAIT
требуется, потому чтоBUTTON
обновляется только один раз за кадр (1/60 секунды). В противном случае одно и то же нажатие кнопки будет обнаружено несколько раз.Это определенно может быть короче
источник
05AB1E ,
3837 байтПользы
udlr
для указаний, но может также использоваться^v<>
для того же количества байтов (символы↑↓←→
не являются частью кодовой страницы 05AB1E, поэтому их использование значительно увеличит число байтов, поскольку кодировка должна быть изменена на ASCII).Попробуйте онлайн или проверьте все контрольные примеры .
Объяснение:
Посмотрите эту подсказку 05AB1E (раздел Как сжать большие целые числа? ), Чтобы понять, почему
Ž9¦
это так2460
.источник