Вступление:
Дома у нас есть часы, которые бьют установленное количество каждый час, но также бьют один раз каждые полчаса. Таким образом, с 0:01 до 12:00 включительно это происходит в следующем порядке:
1, 1, 1, 2, 1, 3, 1, 4, 1, 5, 1, 6, 1, 7, 1, 8, 1, 9, 1, 10, 1, 11, 1, 12
Вызов:
Учитывая целое число n
, выведите список таймфреймов, в которых общее количество ударов равно n
. Кроме того, всегда начинайте как минимум за 1 минуту до этого периода и заканчивайте как минимум через 1 минуту после этого периода (и не более 29 минут).
Например, если ввод n=8
, вывод может быть:
[00:59-03:01, 01:29-03:31, 02:59-04:01, 05:29-06:31, 06:29-07:01, 06:59-07:31, 07:59-08:01]
Для которых эти временные рамки имеют следующие суммы, все равны 8
:
[1+1+2+1+3, 1+2+1+3+1, 3+1+4, 1+6+1, 1+7, 7+1, 8]
Правила вызова:
- Выход гибкий. Вы можете выводить объекты Time (или Date / DateTime), временные метки, строки (с или без начальных нулей), десятичные дроби с
.29
/.31
/.59
/.01
(то есть0.29-3.01
вместо00:29-03:01
) и т. Д. Если ясно, что это до и после таймфрейма ,
Кроме того, вы можете выбрать сумму самостоятельно. Во всех моих примерах я использую 1 минуту, но вы также можете выбрать 5 минут, 15 минут и т. Д. Это также означает, что вы можете использовать.4
/.6
/.9
/.1
(т.е.0.4-3.1
вместо00:24-03:06
), например. Список также гибкий. Может быть списком / коллекцией, массивом, разделенной разделителем строкой, печать каждой строки в STDOUT и т. Д.
Пожалуйста, укажите, какой выбор вывода вы сделали.Примечание. Вам не разрешено выводить суммы таймфреймов, как указано выше, это упоминается только как пояснение. Вы должны вывести временные рамки, в том числе немного до и после него. - Удары оборачиваются от
12:00
до00:30
. Так что, еслиn=14
два таймфрейма11:29-00:31
и11:59-01:01
. - Вход будет в диапазоне
1 <= n <= 90
, где 90 - общая сумма всех возможных ударов. - Временные рамки, которые вы возвращаете, могут быть в любом порядке.
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте найти как можно более короткий ответ для «любого» языка программирования. - К вашему ответу применяются стандартные правила , поэтому вы можете использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода.
- Также, пожалуйста, добавьте объяснение, если это необходимо.
Тестовые случаи:
(все используют 1 минуту до / после таймфреймов и ведущих нулей)
Input: 8
Ouput:
[00:59-03:01, 01:29-03:31, 02:59-04:01, 05:29-06:31, 06:29-07:01, 06:59-07:31, 07:59-08:01]
Input: 14
Output:
[00:29-04:01, 00:59-04:31, 02:59-05:01, 04:29-06:31, 05:59-07:01, 11:29-00:31, 11:59-01:01]
Input: 90
Output:
[00:29-00:01, 00:59-00:31, 01:29-01:01, 01:59-01:31, 02:29-02:01, 02:59-02:31, 03:29-03:01, 03:59-03:31, 04:29-04:01, 04:59-04:31, 05:29-05:01, 05:59-05:31, 06:29-06:01, 06:59-06:31, 07:29-07:01, 07:59-07:31, 08:29-08:01, 08:59-08:31, 09:29-09:01, 09:59-09:31, 10:29-10:01, 10:59-10:31, 11:29-11:01, 11:59-11:31]
Input: 1
Output:
[00:29-00:31, 00:59-01:01, 01:29-01:31, 02:29-02:31, 03:29-03:31, 04:29-04:31, 05:29-05:31, 06:29-06:31, 07:29-07:31, 08:29-08:31, 09:29-09:31, 10:29-10:31, 11:29-11:31]
Input: 2
Output:
[00:29-01:01, 00:59-01:31, 01:59-02:01]
.4
/ .6
/ .9
/ .1
разрешено (это 6 минут, как вы заявили: :24
/ :36
/ :54
/ :06
).