Вступ:
Вдома у нас є годинник, який вражає заявлену суму щогодини, але також б’є раз на кожні півгодини. Отже, з 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
).