Для этой задачи мы записываем время в следующей форме: hh:mm:ss
Несколько примеров:
12:34:08
06:05:30
23:59:00
Задача состоит в том, чтобы вывести время по истечении определенного количества часов , минут и секунд, используя время начала 00:00:00
. Вы можете сравнить это с таймером, который начался в 00:00:00
.
Вот пример входов (с использованием STDIN ) и выходов:
Input: 1h20m5s
Output: 01:20:05
Input: 0h100m0s
Output: 01:40:00
Через 24 часа таймер сбрасывает себя:
Input: 25h0m0s
Output: 01:00:00
Форма входа всегда одинаково: XhYmZs
с X
часами, Y
минутами и Z
секундами (предположим , что X
, Y
и Z
целые числа меньше , чем 100000 и не отрицательные)
Это код-гольф , поэтому наименьшее количество байтов побеждает в этом соревновании
Ответы:
CJam, 34 байта
Попробуй это здесь .
источник
Рубин -
1311151079784 байтаЯ все еще играю в гольф.
Спасибо за @Doorknob за / \ w / заголовок / h | m | s /
источник
gets.tr('ms',?h).split(?h)
->gets.split(/\w/)
.Mathematica,
133116112111 байтисточник
Python 2,
138126 байтТеперь я использую регулярное выражение, хотя все еще довольно долго, хотя ..
Ввод должен быть в кавычках.
источник
С
149112 байтПроверьте это здесь
Кредиты @Dennis для избавления от этого много.
источник
main(h,m,s){scanf("%dh%dm%ds",&h,&m,&s);s+=h*3600+m*60;m=s/60;h=m/60;printf("%02d:%02d:%02d",h%24,m%60,s%60);}
(110 байт, читает из STDIN)h,m,s;main()
должен быть более портативным.main(h,m,s)
работает с GCC ( ссылка )m=s/60;h=m/60;
? После этого вы тоже можете избавиться от этогоs+=
.JavaScript 110 байт
Где х - вход
Я не думаю, что это самый эффективный способ
источник
PHP, 80
8893Б(сохранено как ISO-8859-1)
Работает только на PHP 5 из-за устаревшей
split
функции. Предполагается, что уведомления не отображаются.Как это устроено:
¤—’¢
является"[hm]"
перевернутым и действительным имя константы, PHP использует неопределенные константы в виде строки (сохраняет один символ кавычек)·Å–ÅŒ
то же самое для"H:i:s"
<?=x,y
выводит х и у. Используя!
, результат$s
присваивания преобразуется в логическое и отрицается, а затем преобразуется в строку для вывода.(string)false === ''
split("[hm]", "XhYmZs")
разбивает строку на[X,Y,Zs]
. Затем3600*X+60*Y+Zs
количество секунд. PHP преобразуетсяZs
в целое число какZ
date(Z)
, используем этот результат как метку времени и печатаем его временную часть как «часы: минуты: секунды». В UTC (смещение 0) отметка времени0
равна1970/01/01 00:00:00
. Вычитание смещения часового пояса нормализует дату как UTC без изменения фактически используемого часового пояса (это сэкономило 8 байтов для установки часового пояса).источник
AutoIt, 208 байт
Слишком долго. Тестовое задание:
источник
Pyth, 40 байт
Я все еще учусь. Попробуй это здесь!
источник
Perl 5, 84 (83 байта + 1)
Использует переполнение секунд или минут.
Тестовое задание
источник
VBA (
150149 байт)источник
msgbox
качестве вывода, вы можете изменить наSub
и сохранить 2 байта. Вы также можете убрать все ненужные пустые места вокруг=
и после каждого,,
чтобы сбить его около 134.JavaScript, 97 байт
источник
Invalid left-hand side in assignment
PowerShell, 84 байта
Разбивает ввод командной строки на массив строк на основе
[hms]
регулярного выражения. Использует многословную встроенную функцию.AddSeconds()
для добавления (часы * 3600, минуты * 60 и секунды) к(date 0)
/ k / aMonday, January 1, 0001, 12:00:00 AM
, затем передает это в-f
форматирование,HH:mm:ss
которое автоматически преобразует его в 24-часовой формат часов и выводит его.Пример:
источник
Lua, 104 байта
источник
VB.NET (107 байт)
Первая подача для кода гольф, так что я думаю, количество символов => количество байт?
источник
Питон 3, 158
Безголовая версия:
источник
CJam, 50 байтов
источник
GNU sed + дата, 51 байт
(включая +1 байт для
-r
флага)Это просто заводит
date
добавляет указанное количество часов, минут и секунд к00:00:00
(сегодня) и отображает часть времени. Рекомендуется устанавливатьTZ=UTC
или избегать запуска программы при изменении местного времени (например, переход на летнее время).источник