Вызов
Напишите кратчайший код, который может суммировать все длительности, которые появляются в stdin. Программа должна учитывать только те строки, которые соответствуют одному из следующих шаблонов, и игнорировать остальные.
HH:MM:SS (it will be interpreted as HH hours, MM minutes and SS seconds)
H:MM:SS (it will be interpreted as H hours, MM minutes and SS seconds)
MM:SS (it will be interpreted as MM minutes, SS seconds)
M:SS (it will be interpreted as M minutes, SS seconds)
примеры строк, которые соответствуют перечисленным шаблонам:
12:00:01
2:03:22
00:53
9:13
Вывод должен иметь форму
HHh MMm SSs (that means HH hours, MM minutes and SS seconds with non-zero-padding)
пример
STDIN
Посмотрите приветственное видео.
Видео: 10:37 мин.
Посмотреть видео введение в курс.
Видео: 3:30 мин. Посмотрите видео о том, как использовать обзор урока.
Видео: 9:13 мин.
Посмотрите видеообзор о том, как использовать систему Epsilen, чтобы поделиться своей работой.
Видео: 03:15 мин.
Посмотрите видео, чтобы узнать об оценке академической готовности штата Техас (STAAR).
Видео: 1:05:26 мин.
STDOUT
1ч 32м 1с
источник
10:4:56
? В соответствии с текущей спецификацией они должны рассматриваться как4m 56s
часть,10
которая будет игнорироваться. Тот же вопрос о том10:12:7
, что значит10m 12s
игнорирование7
? Или обработка таких строк может быть определена реализацией?1h 19m 18s
в выходной?37+30+13+15+26==121
,10+3+9+3+5==30
,1==1
, Так что я ожидаю1h 32m 01s
. Что не так в этой логике? Кроме того, такой формат вывода тот, который ожидается, не так ли?Ответы:
Pyth 105
Попробуйте онлайн.
Это требует ввода от STDIN так же, как это делает ответ Javascript, как текст в кавычках с символами новой строки как
\n
s.Образец:
Выход
Пример работы с более странными датами:
Выход
(Только 10:10 и 1:10 являются законными временами)
Основная причина, по которой это так долго, заключается в том, что Pyth не позволит вам извлечь положительные совпадения. Вместо этого это соответствует всему, что не является допустимым временем, и заменяет его пробелом. Затем, расщепление на пустое пространство оставляет только времена и некоторые странные числа. Лишние числа удаляются путем проверки
:
символов, которые будут удалены с недопустимых времен. Это почти наверняка можно дальше играть в гольф;)источник
Javascript ES6, 138 символов
Функция, 139
Принимает строку в качестве аргумента и записывает вывод в консоль:
Программа, 138
Тест на функцию
Выход
источник
JavaScript, ES6,
208 200197 байтЯ знаю, что это очень долго, но я хотел изучить новейшие функции ES6, реверс, уменьшение карты, функции стрелок и понимание массива (оператор распространения).
Просто запустите фрагмент в последнем Firefox.
Как это работает (немного разгадал)
источник
Bash (с grep, sed, awk и date): 124 байта, 120 байтов
Просто вставьте текст в это:
Как это устроено
0123456789:
источник
Perl -
228201Это тот же алгоритм, что и в Optimizer (grep, split, reverse, add).
Я не эксперт по Perl, поэтому, возможно, количество байтов можно уменьшить.
Ungolfed
источник
my
ключевыми словами).Реболь - 174
Ungolfed + аннотированный:
Rebol имеет свой собственный
time!
тип данных. Вы можете увидеть, как вышеприведенный код использует это из примера ниже (из консоли Rebol):источник
Groovy - 195
Я не могу понять, как сжать это больше.
Ungolfed
источник
Mathematica 300 символов
Это небольшое упражнение заняло много кода даже для Mathematica. Конечно, есть более эффективные способы сделать это.
Golfed
Предполагая, что вход хранится в
txt
,Как это работает (используя код unGolfed):
1-Найдите время.
2-разбить на часы, минуты, секунды
3-Сумма раз. Объекты времени - это часы. Вычитание одного временного объекта из другого возвращает длительность, в данном случае 92.0167 минут.
QuantityMagnitude
отбрасывает единицу измерения.4-Преобразовать 92,0167 минут в часы, минуты, секунды.
источник
Perl, 146
Моя запись печатает вывод с завершающим пробелом - надеюсь, все в порядке
Если мы можем предположить, что будет только один раз на строку ввода, мы можем разделить 4 символа:
Они работают, накапливая общее количество прошедших секунд и затем форматируя это значение.
источник