Odkąd widziałem ten pierwszy kilka lat temu, zawsze byłem podporządkowany tego rodzaju zegarowi słownemu, w którym czas jest tak naprawdę wyrażony przez rozjaśnienie słów, czy nie w sensowne zdanie.
Tekst wyświetlany na tym zegarze jest następujący.
IT IS HALF TEN
QUARTER TWENTY
FIVE MINUTES TO
PAST TWO THREE
ONE FOUR FIVE
SIX SEVEN EIGHT
NINE TEN ELEVEN
TWELVE O'CLOCK
Twoim zadaniem jest napisanie takiego działającego zegara. Słowa są podświetlane tylko wtedy, gdy dotyczą drukowania bieżącego czasu. W przeciwnym razie są zapalone. Słowa są „podświetlane” przez wydrukowanie i są „podświetlane” przez zastąpienie ich spacjami o długości słowa.
Przykład: jeśli aktualny czas to 17:23, wydrukowany tekst musi wyglądać dokładnie tak:
IT IS
TWENTY
FIVE MINUTES
PAST
FIVE
Zasady
- Drukowany czas to wariant 12h, ale bez AM / PM.
- Zaokrąglanie odbywa się tylko na podstawie minut (sekundy nie mają żadnego znaczenia). Zaokrąglanie jest wykonywane do najbliższej wielokrotności 5. Więc, na przykład, chociaż 17:52:38 naprawdę jest najbliżej 17:55, ale ponieważ sekundy nie mają znaczenia, 17:52 jest w rzeczywistości zaokrąglane w dół do 17:50, a wydrukowany tekst to „TO DZIESIĘĆ MINUT DO SZEŚCIU” (z odpowiednim odstępem). Więc jeśli
XX
jest wielokrotnością pięciu,XX
będą używane od GG: (XX-2): 00 do GG: (XX + 2): 59. SłowoMINUTES
musi się pojawić, jeśliFIVE
,TEN
lubTWENTY
są oświetlone w sekcji minut (przed „do” lub „Past”). - Wszystkie nieistotne słowa są zastępowane tyloma spacjami, ile potrzeba, aby tekst był umieszczony w powyższym szablonie. Końcowe spacje mogą zostać przycięte. Należy zachować spacje istotne dla utrzymania tekstu na oczekiwanej pozycji.
Linie końcowe mogą być również przycięte. Odpowiednie puste wiersze są nadal wymagane. Przykład:
IT IS TEN MINUTES PAST TWO
Nie zapalaj się
TEN
w pierwszym wierszu lubFIVE
w trzecim wierszu, gdy te wartości odnoszą się do godzin.- Możesz zaakceptować dane wejściowe. Jeśli zaakceptujesz dane wejściowe, będzie to czas wydruku w dowolnym poprawnym formacie (ciąg, lista liczb całkowitych, czas natywny wpisz obsługę języka, ...), ale żadne parametry nie są dozwolone, jeśli nie są powiązane do czasu wydrukowania. Jeśli nie obsługuje danych wejściowych, musisz użyć bieżącej godziny. Jeśli popierasz oba, to lepiej, ale nie ma bonusu;)
- Twój kod może być programem, funkcją, lambda, ale nie fragmentem kodu.
- Jeśli twój język w jakikolwiek sposób obsługuje drukowanie, musi wydrukować wynik (nie mam nic przeciwko w pliku, na standardowym wyjściu). Jeśli twój język w żaden sposób nie obsługuje drukowania, możesz po prostu „zwrócić” oczekiwany tekst. Wynikiem może być cała wielka lub mała litera, a nie połączenie obu.
- Obowiązują standardowe luki.
- To jest golf golfowy, więc wygrywa najkrótszy kod!
- W miarę możliwości proszę podać link do tłumacza online w Twoim języku.
Przypadki testowe
Input: <no input> (the current local time is 19:20)
Output:
IT IS
TWENTY
MINUTES
PAST
SEVEN
Input: 13:15
Output: (empty line is being printed)
IT IS
QUARTER
PAST
ONE
Input: 13:58
Output: (rounding)
IT IS
TWO
O'CLOCK
Input: 14:30
Output: (half is always a edge-case)
IT IS HALF
PAST TWO
Input: 15:35
Output: (light up "TO")
IT IS
TWENTY
FIVE MINUTES TO
FOUR
Input: 10:00
Output: (do not use the TEN or FIVE on the first line when referring to the hours)
IT IS
TEN
O'CLOCK
Input: 12:00
Output: (O'CLOCK and a lot of empty lines)
IT IS
TWELVE O'CLOCK