Wiele zegarów cyfrowych wyświetla czas za pomocą uproszczonych cyfr składających się tylko z siedmiu różnych lampek, które są włączone lub wyłączone:
Po odbiciu w poziomie cyfry 018
nie zmieniają się, ponieważ są symetryczne. Również cyfry 2
i 5
zamień się, 2
stając się 5
i odwrotnie. Wszystkie pozostałe cyfry stają się nieprawidłowe po odbiciu lustrzanym.
Tak więc, biorąc pod uwagę 24-godzinny zegar cyfrowy, istnieje wiele odczytów tak, że lustrzany obraz wyświetlacza cyfrowego jest również prawidłowym odczytem zegara. Twoim zadaniem jest wyprowadzenie wszystkich takich odczytów zegara wraz z odczytami lustrzanymi.
Na przykład 22:21
staje się 15:55
i 00:15
staje 21:00
. Z drugiej strony, 12:34
lub 16:27
nie są już ważne, gdy są dublowane (cyfry 34679
stają się nieważne), i nie są 22:22
ani 18:21
, ponieważ, ponieważ są tylko 24 godziny na dobę i 60 minut na godzinę, żaden rozsądny zegar nie wyświetli się 55:55
lub 12:81
.
Zadanie
Napisz program lub funkcję, która nie pobiera danych wejściowych i wyświetla wszystkie prawidłowe pary w porządku rosnącym, jak pokazano poniżej:
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
Końcowy lub wiodący nowy wiersz jest dozwolony. Dozwolone jest także posiadanie kilku spacji bezpośrednio przed przesunięciem linii. Czasy muszą być w formacie hh:mm
, w razie potrzeby uzupełnione zerami.
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach. Jak zwykle standardowe luki są niedozwolone.
źródło
String
jest tablicąChar
. Jest to dopuszczalne, jeśli moja odpowiedź daje listy zChar
? Typy wyglądają identycznie po wydrukowaniu gołą czcionką.1
nie jest dokładnie identyczna z odbiciem lustrzanym, ponieważ można stwierdzić, czy segmenty znajdujące się najbardziej po prawej, czy te znajdujące się po lewej stronie tworzą pionową „linię”, która składa się na cyfrę. Rozumiem, że uważamy je tutaj za identyczne.1
można je było wyśrodkować.Odpowiedzi:
05AB1E , 34 bajty
Wypróbuj online!
Wyjaśnienie
źródło
Python 2 ,
187180178177 bajtówWypróbuj online!
Dzięki za +1 Kevina Cruijssena.
źródło
APL (Dyalog Unicode) , 84 bajtów SBCS
Kompletny program wyjściowy do STDOUT. Wymaga
⎕IO
( I ndex O rigin)0
ustawienia domyślnego w wielu systemach.Wypróbuj online!
⍳1440
że wielu ɩ ntegers0 60⊤
przelicz na mieszaną bazę ∞, 60100+
dodaj 100 (to wstawia potrzebne 0)⍕¨
formatuj (stringify) każdy1↓¨
upuść pierwszy znak z każdego (usuwa to pierwsze 1){
…}⌿
Zastosuj następującą anonimową funkcję w kolumnach (⍺
najwyższa godzina,⍵
minuta)0::
jeśli wystąpi jakikolwiek błąd, nic nie zwracaj⋄
próbować:'015xx2xx8x:'[
…]
Indeksuj ten ciąg za pomocą:∊⍺':'⍵
ε nlisted (spłaszczone) listę godziny, okrężnicy, minutyi←
przechowywane wi
(dla i nput)⎕D⍳
Wskaźniki każdego znaku na liście D igits⌽
odwróć tot←
przechowaćt
(dla t ime)(
…)⊆
Grupa biegnie gdzie:':'≠t
dwukropek różni się odt
⍎¨
wykonać (ocenić) każdy23 59≥
Wartość logiczna dla każdego, czy są one mniejsze lub równe odpowiednio 23 i 59∧/
czy oba są prawdziwe?:
jeśli tak, to:⍕i'-'t
sformatowana (oddzielona spacjami) lista danych wejściowych, myślnika, czasu1↓
upuść pierwszą (spację)⎕←
wyjście do STDOUTźródło
Siatkówka , 57 bajtów
Wypróbuj online! Wyjaśnienie:
Włóż separator.
Wygeneruj wszystkie możliwe zestawy czterech lustrzanych cyfr.
Usuń te z nielegalnymi godzinami.
Wstaw dwukropki.
Sortuj w kolejności.
źródło
Python 2 ,
279277255 bajtówWypróbuj online!
Kredyty
279 bajtów zredukowanych do 256 przez dylnan .
256 bajtów zredukowanych do 255 przez FlipTrack .
źródło
Czysty ,
269...172170 bajtówWypróbuj online!
Nie golfowany:
źródło
Pyth , 48 bajtów
Wypróbuj online!
Generuje wszystkie możliwe kombinacje,
0125
a następnie manipuluje nimi w czasie. Są w prawidłowej kolejności, ponieważ są generowane w kolejności leksykograficznej. Wreszcie, odfiltrowuje dodatkowe nieprawidłowe czasy, usuwając linie pasujące do wyrażenia regularnego5.:
lub25:
. Niestety, nie wydaje się, aby kompresja działała ładnie na dowolnym łańcuchu używanym przez ten program, chyba że popełniłem błąd lub przeoczenie.źródło
Perl 5 , 147 bajtów
Wypróbuj online!
źródło
Japt v2 (+
-R
), 51 bajtówPrzetestuj online!
Wyjaśnienie
źródło
JavaScript (ES6), 142 bajty
Wypróbuj online!
źródło
Węgiel drzewny , 59 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Utwórz cztery zagnieżdżone pętle dla niezaznajomionych cyfr.
Sprawdź, czy ani godzina, ani minuty nie są równe 25. (Odbicie lustrzane 25 minut spowoduje 25 godzin, więc nie ma mowy.)
Wydrukuj niezaznajomiony czas.
Wydrukuj czas lustrzany, przekształcając odwrócone cyfry (lub
3
dwukropek) z łańcucha na liczbę całkowitą i przeglądając je w tabeli translacji.Alternatywnie, również dla 59 bajtów:
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Twórz pętle dla godzin i minut.
Wyklucz,
25
a także wszelkie minuty kończące się w2
.Przelicz godziny i minuty na bazę 4.
Wydrukuj cyfry wyszukiwane w tabeli tłumaczeń.
Wydrukuj separator.
Wydrukuj odwrócone cyfry sprawdzone w lustrzanej tabeli translacji.
źródło
Galaretka ,
72666255 bajtówWypróbuj online!
Program Niladic. Dostałem podwójny
'0125'
pomysł od odpowiedzi Emabny 05AB1E, ale resztę zrobiłem bez konsultacji, ponieważ języki się rozeszły . Prawdopodobnie istnieje wiele możliwości gry w golfa.Wyjaśnienie
Program działa w następujący sposób:
Weź wszystkie produkty o długości czterech z listy znaków za
'0125'
pomocą“0152:”©ṢṖp`⁺
.©
kopiuje ciąg'0152:'
do rejestru, aby użyć go później.ṢṖ
sortuje, a następnie wyskakuje ostatni element ciągu →'0125'
.⁺
duplikuje link do produktu.ḣ176
usuwa wszystkie czasy z formatem25xx
lub5xxx
(nieprawidłowe godziny).j€“:”
łączy każdą parę cyfr za pomocą':'
. np .['05'],['21']]
→'05:12'
Ç€
stosuje pierwszy link do każdego z tych czasów. Znajduje indeks każdego znaku w ciągu,'0125:'
a następnie dla każdego z tych wskaźników pobiera znak w ciągu'0152:'
i odwraca go. To jest operacja dublowania (cofanie i zamiana2
s i5
s).µ;"
łączy pierwotny czas z czasem lustrzanym →'05:2115:20'
⁾25ẇ$ÐṂ
odfiltrowuje czasy z podciągiem'25'
. Łapie to za każdym razem pary z lustrzaną połową25:xx
lub5x:xx
. Uwaga : nie wiem, dlaczego$
jest to konieczne. Być może ktoś mógłby zagrać w golfa z odpowiednią składnią, ale nie jestem pewien.Podziel każdy z tych czasów na dwie połowy (
œs€2
), a następnie połącz je za pomocą ciągu' - '
(j€“ - ”
).'05:2115:20'
→'05:21 - 15:20'
.Na koniec
Y
łączy wszystkie ciągi z nową linią i wszystko jest domyślnie drukowane.Stare wersje
62 bajty
Wypróbuj online!
66 bajtów
Wypróbuj online!
72 bajty
Wypróbuj online!
źródło
C (gcc) ,
175174 bajtówJednorazowo dzięki @Steadybox.
Wypróbuj online!
źródło
Befunge, 178 bajtów
Wypróbuj online!
źródło
Kotlin ,
205207 bajtówUpiększony
Test
TIO
TryItOnline
Edycje
źródło
-
. Dodanie kosztuje tylko dwa bajty: Wypróbuj online!C, 225 bajtów
Ponieważ nie ma odpowiedzi w języku C, zamieszczam własną. Inne podejście może być krótsze.
Wypróbuj online!
źródło