Problem
Pewnego dnia podchodzi do ciebie szef i mówi ci, że musi znać godzinę. Nadal nalega, abyś wskazał zegar bezpośrednio nad twoją głową i przyznaje, że ma poważny przypadek dyskalkulii , co powoduje, że nawet nie widzi liczb na zegarze. Chociaż nadal zastanawiasz się, jak ktoś, kto nie widzi liczb, może prowadzić firmę, mówi ci, abyś „coś z tym zrobił”, cokolwiek to jest.
Twoim zadaniem jest teraz utworzenie programu lub funkcji, która przy danym czasie wprowadzania z godzinami i minutami (sekundy są opcjonalne) (godziny są oparte na 24), generuje czytelne angielskie zdanie, które nie zawiera liczb.
Nie trzeba podawać sekund.
Na przykład 08:45:15
powinien wyprowadzaćquarter to nine o'clock AM
Przypadki testowe
00:00:00 > twelve night
12:00:00 > twelve noon
06:00:00 > six o'clock AM
18:00:00 > six o'clock PM
06:15:00 > quarter past six o'clock AM
18:45:00 > quarter to seven o'clock PM
11:30:00 > half past eleven o'clock AM
13:22:00 > twentytwo minutes past one o'clock PM
17:43:00 > seventeen minutes to six o'clock PM
00:09:00 > nine minutes past twelve o'clock AM
Zasady
Liczby wyjściowe mogą mieć postać czterdziestu dwóch lub czterdziestu dwóch, w zależności od tego, co najbardziej ci się podoba. Standardowe luki są niedozwolone. Końcowe znaki nowej linii są dozwolone, ale zdanie powinno znajdować się w 1 linii.
Wejście może być w dowolnym formacie chcesz, na przykład HH:MM:SS
, HH,MM,SS
, HHMMSS
, HH/MM/SS
, lub dowolny wariant bez sekund, ale trzeba zrobić format wejściowy wyczyścić w swojej odpowiedzi. one minute
Zamiast tego nie jest potrzebne wyjścieone minutes
na minuty w zakresie od 0 do 30 (w tym 0 i 30) powinieneś użyć past
, a dla pozostałych powinieneś użyćto
Ponieważ czas jest względny, wygrywa najkrótszy kod w bajtach.
źródło
forty-five
gdy przypadki testowe wyraźnie określająquarter to
odpowiedni format wejściowy? (wystarczy zmienić na czterdzieści dwa;)) Również złożoność kolmogorowa nie jest odpowiednim znacznikiem.one
dotwenty-nine
, zquarter
wymianąfifteen
ihalf
reprezentującythirty
, ale to nie jest jasne. Ponadto, w przypadku przyszłych pytań, gorąco polecam piaskownicę, aby wypracować załamania przed opublikowaniem.Odpowiedzi:
JavaScript,
384381 bajtówPokaż fragment kodu
źródło
LaTeX, 466 bajtów
Po prostu wywołaj makro
\f
as\f[hour]{minutes}
, tutaj kilka testów:źródło
\documentclass[a4paper,12pt]{article}
Python 2, 498 bajtów
Dane wejściowe są argumentem funkcji. Pierwsza godzina, a potem minuta, oba jako liczby całkowite. Wynik zostanie wydrukowany na ekranie.
Wypróbuj online! (z lekko rozszerzonymi testami)
To była fajna gra w golfa. Chociaż wszystkie te zagnieżdżone trójskładniki doprowadziły mnie do szaleństwa ^^
, planowałem zrobić to w Pyth po tym, ale nie sądzę, że jestem w stanie zrobić to mentalnie w tej chwili (lub kiedykolwiek).
Nie golfowany:
źródło
[x>12]
powinien być[x>=12]
, 12:01 PM to nie AMPerl 5,
367 361385 bajtówZniekształcony
Sformatowane i testowe przypadki:
źródło
one minutes to one o' clock night
wynik jako 00:01, zamiastone minutes past twelve o'clock AM
lubone minutes past twelve night
C, 478 bajtów
Przypadki testowe
Wypróbuj tutaj .
źródło
00 00
daje poprawne wyjście, podczas gdy00:00
dajeone minutes past twelve o'clock AM
, chociaż jestem pewien, że ma to coś wspólnego z tym, jak analizujesz dane wejściowe.scanf
prawdopodobnie nie parsuje „00: 00”, jak można się spodziewać :)Partia,
779774752749 bajtówZmień drugi wiersz na
set t=%1%time%
domyślny, aby podawać aktualny czas, jeśli nie podano czasu.Edycja: Zapisałem 22 bajty, optymalizując moje
set/a
wyciągi. Zaoszczędzono 3 bajty dzięki @ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ.Kiedy pisałem moją oryginalną wersję, popełniłem błąd, mówiąc godzinę tak, jak bym to powiedział, tj. Godzina tylko o dokładnych godzinach i północy i południa zamiast dwunastej nocy i dwunastego południa:
źródło
midnight
imidday
zamiasttwelve night
itwelve noon
. Bardzo podoba mi się to, jak używasz fałszywych rozszerzeń i nazw w swojej pętli for btw.