Wyzwanie jest uproszczone, biorąc pod uwagę czas wprowadzania jako ciąg znaków w jednym z następujących formatów:
hh
, hh:mm
Lub hh:mm:ss
z 0 ≤ hh ≤ 23
, 0 ≤ mm ≤ 59
a 0 ≤ ss ≤ 59
.
Podaj, która godzina jest obecnie, używając następujących symboli:
AA LABEL FOR CHARACTER CODE POINT HEXADECIMAL
== ==================== ========== ===========
🕐 Clock Face 01 Oclock 128336 0x1F550
🕑 Clock Face 02 Oclock 128337 0x1F551
🕒 Clock Face 03 Oclock 128338 0x1F552
🕓 Clock Face 04 Oclock 128339 0x1F553
🕔 Clock Face 05 Oclock 128340 0x1F554
🕕 Clock Face 06 Oclock 128341 0x1F555
🕖 Clock Face 07 Oclock 128342 0x1F556
🕗 Clock Face 08 Oclock 128343 0x1F557
🕘 Clock Face 09 Oclock 128344 0x1F558
🕙 Clock Face 10 Oclock 128345 0x1F559
🕚 Clock Face 11 Oclock 128346 0x1F55A
🕛 Clock Face 12 Oclock 128347 0x1F55B
W następującym formacie:
It is currently {Clock Face 1} with {mm} minutes and {ss} seconds until {Clock Face 2}.
Przykłady (w tym wszystkie przypadki z marginesami):
Sprawa z tylko godzinami ...
f("12") = "It is currently 🕛."
Skrzynia z godzinami i minutami ...
f("12:30") = "It is currently 🕛 with 30 minutes until 🕐."
Sprawa z godzinami, ale minuty są wliczone jako 00 ...
f("12:00") = "It is currently 🕛."
Sprawa z godzinami, minutami i sekundami ...
f("12:30:30") = "It is currently 🕛 with 29 minutes and 30 seconds until 🕐."
Sprawa z godzinami i minutami, ale ma sekundy uwzględnione jako 00 ...
f("12:30:00") = "It is currently 🕛 with 30 minutes until 🕐."
Sprawa z godzinami i minutami, z mniej niż minutą do następnej godziny ...
f("12:59:59") = "It is currently 🕛 with 1 seconds until 🕐."
Nie musisz zmieniać z liczby mnogiej na liczbę pojedynczą.
Sprawa z godzinami i minutami, z 1 minutą do następnej godziny ...
f("12:59") = "It is currently 🕛 with 1 minutes until 🕐."
Nie musisz zmieniać z liczby mnogiej na liczbę pojedynczą.
Sprawa wykorzystująca czas wojskowy (tak, musisz sobie z tym poradzić) ...
f("23:30:30") = "It is currently 🕚 with 29 minutes and 30 seconds until 🕛."
Nieprawidłowe przypadki ...
f("PPCG") = This cannot occur, you are guaranteed a valid format by the definition of the problem.
f(66:66:66) = This cannot occur, you are guaranteed valid numbers by the definition of the problem.
f(24:60:60) = This cannot occur, you are guaranteed valid numbers by the definition of the problem.
W przypadku niepoprawnych przypadków nie trzeba dostosowywać się do żadnego stylu, błędy są w porządku.
Ogólnie wyzwanie jest dość uproszczone, ale wydaje się być wystarczająco dynamiczne, aby moim zdaniem było zabawne. Najkrótszy kod tutaj jest zwycięzcą, ponieważ nie ma wiele zmiennych aspektów w kodzie oprócz długości.
0 < hh < 24
,0 < mm < 60
i0 < ss < 60
, masz na myśli0 ≤ hh ≤ 23
,0 ≤ mm ≤ 59
i0 ≤ ss ≤ 59
.AM
czyPM
tagi?Odpowiedzi:
Befunge,
256250 bajtówWypróbuj online!
Wyniki są zakodowane jako utf-8, ponieważ działa najlepiej z TIO, ale jeśli testujesz lokalnie, może być konieczne dostosowanie domyślnej strony kodowej systemu, aby poprawnie wyświetlać tarcze zegara. W przeciwnym razie wystarczy przekierować wyjście do pliku i otworzyć go w edytorze kompatybilnym z utf-8.
Wyjaśnienie
Pierwsze trzy wiersze odczytują godziny, minuty i sekundy od wejścia standardowego, sprawdzając EOF lub wysuw wiersza po każdej wartości i zastępując zerem brakujące elementy wejściowe. W wierszu czwartym dostosowujemy wartość minut, jeśli sekundy są niezerowe, przekształcamy wartość godziny w zakres od 0 do 11 (aby dopasować odpowiedni znak Unicode dla każdej godziny) i zapisujemy początkową część wyniku, w tym pierwsza tarcza zegara.
W tym momencie musimy podążać za różnymi gałęziami w zależności od tego, które składniki są niezerowe. Pierwszy test, na początku linii piątej, sprawdza tylko, czy minuty i sekundy są równe zero. Jeśli tak, wypisujemy finał
.
i wychodzimy. W przeciwnym razie wiersze szósty i siódmy zajmują się pozostałymi przypadkami - wypisanie odpowiedniego tekstu i wartości, zanim wszystkie ścieżki ponownie połączą się w wierszu piątym, aby zapisać ostatnią tarczę zegara (wykonywanie od prawej do lewej).źródło
JavaScript (ES6), 201
Mniej golfa
Test
źródło
String
w kodzie""
na pusty ciąg, aby zaoszczędzić 4 bajty :). Ach, cholera, on też może.It is currently 🕛 with 60 minutes until 🕐
. Myślę, że powinnoIt is currently 🕛.
JavaScript (ES6), 201 bajtów
226 bajtów, jeśli weźmiesz pod uwagę liczbę mnogą:
źródło
PowerShell ,
250243 bajtówWypróbuj online!
źródło
C, 241 bajtów
Zapisuje UTF-8 na standardowe wyjście.
Wypróbuj online!
Kod z białymi znakami:
źródło