Многие цифровые часы отображают время, используя упрощенные цифры, состоящие только из семи различных лампочек, которые либо включены, либо выключены:
При зеркальном отражении цифры 018
не меняются, потому что они симметричны. Также цифры меняются 2
и 5
меняются местами, 2
становятся 5
и наоборот. Все остальные цифры становятся недействительными при отражении.
Таким образом, при наличии 24-часовых цифровых часов имеется много показаний часов, так что зеркальное изображение цифрового дисплея также является действительным показанием часов. Ваша задача - вывести все такие показания часов вместе с зеркальными показаниями.
Например, 22:21
становится 15:55
и 00:15
становится 21:00
. С другой стороны, 12:34
или 16:27
они больше не действительны при зеркальном отображении (цифры 34679
становятся недействительными), и ни один из них не является 22:22
или 18:21
, потому что, поскольку в дне всего 24 часа, а в часе 60 минут, нормальные часы не будут отображаться 55:55
или 12:81
.
задача
Напишите программу или функцию, которая не требует ввода и выводит все действительные пары в порядке возрастания, как показано ниже:
00:00 - 00:00
00:01 - 10:00
00:05 - 20:00
00:10 - 01:00
00:11 - 11:00
00:15 - 21:00
00:20 - 05:00
00:21 - 15:00
00:50 - 02:00
00:51 - 12:00
00:55 - 22:00
01:00 - 00:10
01:01 - 10:10
01:05 - 20:10
01:10 - 01:10
01:11 - 11:10
01:15 - 21:10
01:20 - 05:10
01:21 - 15:10
01:50 - 02:10
01:51 - 12:10
01:55 - 22:10
02:00 - 00:50
02:01 - 10:50
02:05 - 20:50
02:10 - 01:50
02:11 - 11:50
02:15 - 21:50
02:20 - 05:50
02:21 - 15:50
02:50 - 02:50
02:51 - 12:50
02:55 - 22:50
05:00 - 00:20
05:01 - 10:20
05:05 - 20:20
05:10 - 01:20
05:11 - 11:20
05:15 - 21:20
05:20 - 05:20
05:21 - 15:20
05:50 - 02:20
05:51 - 12:20
05:55 - 22:20
10:00 - 00:01
10:01 - 10:01
10:05 - 20:01
10:10 - 01:01
10:11 - 11:01
10:15 - 21:01
10:20 - 05:01
10:21 - 15:01
10:50 - 02:01
10:51 - 12:01
10:55 - 22:01
11:00 - 00:11
11:01 - 10:11
11:05 - 20:11
11:10 - 01:11
11:11 - 11:11
11:15 - 21:11
11:20 - 05:11
11:21 - 15:11
11:50 - 02:11
11:51 - 12:11
11:55 - 22:11
12:00 - 00:51
12:01 - 10:51
12:05 - 20:51
12:10 - 01:51
12:11 - 11:51
12:15 - 21:51
12:20 - 05:51
12:21 - 15:51
12:50 - 02:51
12:51 - 12:51
12:55 - 22:51
15:00 - 00:21
15:01 - 10:21
15:05 - 20:21
15:10 - 01:21
15:11 - 11:21
15:15 - 21:21
15:20 - 05:21
15:21 - 15:21
15:50 - 02:21
15:51 - 12:21
15:55 - 22:21
20:00 - 00:05
20:01 - 10:05
20:05 - 20:05
20:10 - 01:05
20:11 - 11:05
20:15 - 21:05
20:20 - 05:05
20:21 - 15:05
20:50 - 02:05
20:51 - 12:05
20:55 - 22:05
21:00 - 00:15
21:01 - 10:15
21:05 - 20:15
21:10 - 01:15
21:11 - 11:15
21:15 - 21:15
21:20 - 05:15
21:21 - 15:15
21:50 - 02:15
21:51 - 12:15
21:55 - 22:15
22:00 - 00:55
22:01 - 10:55
22:05 - 20:55
22:10 - 01:55
22:11 - 11:55
22:15 - 21:55
22:20 - 05:55
22:21 - 15:55
22:50 - 02:55
22:51 - 12:55
22:55 - 22:55
Трейлинг или ведущий перевод строки разрешены. Также допускается наличие нескольких пробелов непосредственно перед переводом строки. Время должно быть в формате hh:mm
, дополненном нулями при необходимости.
Это код-гольф , поэтому выигрывает самый короткий ответ в байтах. Как обычно, стандартные лазейки запрещены.
источник
String
это массивChar
. Приемлемо , если мой ответ дает список изChar
? Типы выглядят одинаково, когда напечатаны.1
не совсем совпадает с ее зеркальным отображением, потому что вы можете сказать, используются ли крайние правые сегменты или крайние левые сегменты для формирования вертикальной «линии», которая составляет цифру. Я понимаю, что мы считаем их идентичными здесь.1
можно было центрировать.Ответы:
05AB1E , 34 байта
Попробуйте онлайн!
объяснение
источник
Python 2 ,
187180178177 байтПопробуйте онлайн!
Спасибо за +1 Кевин Круйссен.
источник
APL (Dyalog Unicode) , 84 байта SBCS
Завершите вывод программы в STDOUT. Требуется
⎕IO
( я ndex O rigin),0
который по умолчанию во многих системах.Попробуйте онлайн!
⍳1440
что многие ɩ ntegers0 60⊤
преобразовать в смешанную базу ∞, 60100+
добавить 100 (это добавит необходимые 0)⍕¨
форматировать (stringify) каждый1↓¨
удалить первый символ из каждого (это удаляет первые 1){
…}⌿
Применить следующую анонимную функцию по столбцам (⍺
верхний час,⍵
минутный)0::
если произойдет какая-либо ошибка, ничего не вернуть⋄
пытаться:'015xx2xx8x:'[
…]
Индексировать эту строку с помощью:∊⍺':'⍵
ε nlisted (сплющенные) список часов, двоеточие, минутыi←
хранится вi
(для я Nput)⎕D⍳
ɩ ndices каждого символа в списке D igits⌽
изменить этоt←
сохранить в качествеt
(для т IME)(
…)⊆
Группа бежит где:':'≠t
двоеточие отличается отt
⍎¨
выполнить (оценить) каждый23 59≥
Логическое значение для каждого, меньше или равно 23 и 59 соответственно∧/
оба правда?:
если так, то:⍕i'-'t
форматированный (разделенный пробелами) список ввода, тире, времени1↓
бросить первый (пробел)⎕←
вывод на STDOUTисточник
Сетчатка , 57 байт
Попробуйте онлайн! Объяснение:
Вставьте разделитель.
Генерация всех возможных наборов из четырех зеркальных цифр.
Удалить тех, у кого незаконные часы.
Вставьте двоеточия.
Сортировать по порядку.
источник
Python 2 ,
279277255 байтПопробуйте онлайн!
кредиты
279 байтов уменьшено до 256 с помощью dylnan .
256 байтов уменьшены до 255 с помощью FlipTrack .
источник
Чисто ,
269...172170 байтПопробуйте онлайн!
Ungolfed:
источник
Pyth , 48 байтов
Попробуйте онлайн!
Генерирует все возможные комбинации,
0125
а затем манипулирует ими во времени. Они в правильном порядке, потому что они генерируются в лексикографическом порядке. Наконец, это отфильтровывает лишние недопустимые времена, удаляя строки, которые соответствуют регулярному выражению5.:
или25:
. К сожалению, не похоже, что сжатие работает хорошо на любой из строк, которые использует эта программа, если я не сделал ошибку или упущение.источник
Perl 5 , 147 байт
Попробуйте онлайн!
источник
Japt v2 (+
-R
), 51 байтПроверьте это онлайн!
объяснение
источник
JavaScript (ES6), 142 байта
Попробуйте онлайн!
источник
Древесный уголь , 59 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Создайте четыре вложенных цикла для незапятнанных цифр.
Убедитесь, что ни часы, ни минуты не равны 25. (Зеркальное отображение 25 минут приведет к 25 часам, так что это не нужно.)
Распечатайте время без зеркал.
Распечатайте зеркальное время, преобразовав обратные цифры (или
3
для двоеточия) из строки в целое число и найдя их в таблице перевода.Кроме того, также для 59 байтов:
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Создайте циклы для часов и минут.
Исключить,
25
а также любые минуты, заканчивающиеся на2
.Перевести часы и минуты в базу 4.
Выведите цифры, найденные в таблице перевода.
Распечатать разделитель.
Распечатайте перевернутые цифры, найденные в зеркальной таблице перевода.
источник
Желе ,
72666255 байтПопробуйте онлайн!
Ниладическая программа. Я получил двойной продукт
'0125'
идеи от ответа 05AB1E от Эминьи, но остальное я сделал, не посоветовавшись с этим, так как после этого языки расходятся. Есть, вероятно, возможности для игры в гольф, возможно, много.объяснение
Программа работает следующим образом:
Возьмите все произведения длины четыре из списка символов
'0125'
с“0152:”©ṢṖp`⁺
.©
копирует строку'0152:'
в регистр для последующего использования.ṢṖ
сортирует затем всплывает последний элемент строки →'0125'
.⁺
дублирует ссылку на товар.ḣ176
удаляет любое время с форматом25xx
или5xxx
(не действительные часы).j€“:”
соединяет каждую пару цифр с':'
. например['05'],['21']]
→'05:12'
.Ç€
применяет первую ссылку к каждому из этих времен. Он находит индекс каждого символа в строке,'0125:'
затем для каждого из этих индексов получает символ в строке'0152:'
и переворачивает его. Это зеркальная операция (реверсирование и замена2
s и5
s).µ;"
объединяет исходное время с зеркальным временем →'05:2115:20'
⁾25ẇ$ÐṂ
отфильтровывает время с помощью подстроки'25'
. Это ловит любые пары времени с зеркальной половиной25:xx
или5x:xx
. Примечание : я не знаю, почему$
это необходимо. Возможно, кто-то может сыграть в гольф с правильным синтаксисом, но я не уверен.Разделите каждое из этих времен на две половины (
œs€2
), затем соедините их строкой' - '
(j€“ - ”
).'05:2115:20'
→'05:21 - 15:20'
.Наконец,
Y
объединяет все строки с новой строкой, и все печатается неявно.Старые версии
62 байта
Попробуйте онлайн!
66 байт
Попробуйте онлайн!
72 байта
Попробуйте онлайн!
источник
C (gcc) ,
175174 байтаОдин раз благодаря @Steadybox.
Попробуйте онлайн!
источник
Befunge, 178 байт
Попробуйте онлайн!
источник
Котлин ,
205207 байтукрашенный
Тестовое задание
TIO
TryItOnline
Правки
источник
-
. Стоит добавить всего два байта: попробуйте онлайн!C 225 байтов
Поскольку ответа C нет, я выкладываю свой собственный. Какой-то другой подход может быть короче.
Попробуйте онлайн!
источник