Первоначально опубликовано (и удалено) @Tlink , который, скорее всего, был вдохновлен этим вопросом StackOverflow .
Так как это было позором, это было удалено, потому что это казалось хорошим испытанием в целом, я решил, что перепечатал бы это с надлежащим форматированием и правилами. (Я пытался связаться с @Tlink и получить его / ее разрешение на публикацию, но он не отвечает больше, поэтому я решил опубликовать его сейчас.)
Входные данные: шесть цифр.
Вывод: либо первое, либо последнее действительное время в 24-часовом формате (00:00:00
через 23:59:59
). (Вы можете сами выбрать, выводите ли вы первое или последнее действительное время.)
Пример:
Когда входные данные 1,8,3,2,6,4
, могут быть созданы следующие времена:
12:36:48 12:38:46 12:46:38 12:48:36
13:26:48 13:28:46 13:46:28 13:48:26
14:26:38 14:28:36 14:36:28 14:38:26
16:23:48 16:24:38 16:28:34 16:28:43
16:32:48 16:34:28 16:38:24 16:38:42
16:42:38 16:43:28 16:48:23 16:48:32
18:23:46 18:24:36 18:26:34 18:26:43
18:32:46 18:34:26 18:36:24 18:36:42
18:42:36 18:43:26 18:46:23 18:46:32
21:36:48 21:38:46 21:46:38 21:48:36
23:16:48 23:48:16
Таким образом , мы выведем либо 12:36:48
или23:48:16
в этом случае, будучи первым / последним соответственно.
Правила соревнований:
- Укажите, будете ли вы указывать первое или последнее действительное время в своем ответе.
- Ввод / вывод является гибким. Ввод может быть шесть отдельных целых чисел; строка, содержащая шесть цифр; целочисленный список / массив; одно (возможно восьмеричное) число; и т.д. Вывод может быть правильно упорядоченным списком / массивом цифр; Строка в формате
HH:mm:ss
/HHmmss
/HH mm ss
; каждая цифра печатается с разделителем новой строки; и т. д. Ваш звонок. - Вам разрешается брать цифры в любом порядке, в котором вы хотите, поэтому они уже могут быть отсортированы от минимального к максимальному или наоборот.
- Если с указанными цифрами (т. Е.
2,5,5,5,5,5
) Не может быть создано правильное время , сделайте это так, как вам хочется. Может вернутьсяnull
/false
;"Not possible"
; сбой с ошибкой; и т. д. (Нельзя вывести недопустимое время, например55:55:52
, или другое допустимое время,00:00:00
.) Пожалуйста, укажите, как он обрабатывает входы, для которых не может быть создано допустимое время. - Вам не разрешено выводить все возможные допустимые времена. Только самые ранние / самые последние должны быть выведены / возвращены.
24
для часов (то есть24:00:00
) или60
для минут / секунд (то есть00:60:60
) не действительны. Диапазоны указаны[00-23]
для часов,[00-59]
минут и секунд.
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте придумать как можно более короткий ответ для «любого» языка программирования. - К вашему ответу применяются стандартные правила , поэтому вы можете использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода.
- Также, пожалуйста, добавьте объяснение, если это необходимо.
Тестовые случаи:
Input: Earliest output: Latest output:
1,2,3,4,6,8 12:36:48 23:48:16
2,5,5,5,5,5 None possible None possible
0,0,0,1,1,1 00:01:11 11:10:00
1,1,2,2,3,3 11:22:33 23:32:11
9,9,9,9,9,9 None possible None possible
2,3,5,5,9,9 23:59:59 23:59:59
1,2,3,4,5,6 12:34:56 23:56:41
0,0,0,0,0,0 00:00:00 00:00:00
1,5,5,8,8,8 18:58:58 18:58:58
1,5,5,5,8,8 15:58:58 18:58:55
1,1,1,8,8,8 18:18:18 18:18:18
06:08:60
ли допустимо, учитывая, что в течение этой минуты была скачок секунды?
60
минуты и секунды недействительны. Диапазоны [00-23]
, [00-59]
и [00-59]
. Уточню это в вызове.
23:48:16
допустимый вывод для примера?