Bonjour, PPCG! Quelle heure est-il? Oznacza to, która godzina jest po francusku, bo właśnie o to chodzi w tym wyzwaniu.
Czas mówienia po francusku (przynajmniej formalnie) różni się nieco od mówienia po angielsku. Mówienie czasu zaczyna się od Il est (Jest). Następnie podajesz godzinę, po której następuje heures (godzina). (Jeśli nie znasz francuskich liczb, oto lista: http://blogs.transparent.com/french/french-numbers-learn-how-to-count-from-1-to-1000/ ). Jeśli jest godzina pierwsza, nie zastanawiaj się nad tym. Do południa używaj midi (bez heures), a do północy stosuj minuit .
O ile minutami nie jest 00, podążasz za nią wraz z liczbą minut. Istnieje jednak kilka wyjątków. Przez 15 minut chcesz powiedzieć et quart , a przez 30 minut chcesz powiedzieć et demi . Po 30 minutach zwiększysz liczbę godzin o jeden, a następnie dodasz słowo moins i 60 - minuty. Więc 18:40 jest Il sept heures moins vingt (vingt = 20). 45 minut to moins le quart .
Wreszcie, kończysz go porą dnia. Rano mówisz „ du matin” . Po południu (subiektywnie, ale zdefiniuję to jako od 13 do 17), mówisz de l'apres-midi (technicznie powinien być akcent nad e, ale eh). A na noc (17–12) mówisz „ du soir” . Pamiętaj, że do północy i południa ( minuit i midi ) nie umieszczasz żadnego z nich później - implikowana jest pora dnia, w zależności od tego, którego używasz.
Jak zapewne już ustaliłeś, wyzwaniem jest wydrukowanie bieżącego czasu lokalnego w języku francuskim przy użyciu tych reguł. Oto, jak powinien wyglądać przykładowy wydruk w różnych porach. (Czas w nawiasach nie musi być oczywiście drukowany, jest tylko tam, więc wiesz, jakie są godziny):
Il est sept heures du matin. (7:00 A.M)
Il est deux heures de l'apres-midi. (2:00 P.M)
Il est une heure du matin. (1:00 A.M)
Il est huit heures du soir. (8:00 P.M)
Il est midi. (12:00 P.M, Noon)
Il est minuit. (12:00 A.M, Midnight)
Il est cinq heures vingt du soir. (5:20 P.M)
Il est six heures et quart du matin. (6:15 A.M)
Il est neuf heures et demi du matin. (9:30 A.M)
Il est quatre heures moins dix de l'apres-midi. (3:50 P.M, not 4:50!)
Il est midi moins le quart. (11:45 A.M)
To jest golf golfowy, więc wygrywa najkrótszy kod. Powodzenia!
EDYCJA: okres jest wymagany.
źródło
Il est huit heures quarante et une du matin
(poprawnie) czyIl est neuf heures moins dix-neuf du matin
(brzmi dziwnie)?après-midi
? Czy możemy?Odpowiedzi:
PHP -
521473 bajtówDodałem kilka nowych linii dla czytelności:
Metoda używana do konwersji liczby na liczbę w języku francuskim jest zainspirowana tą odpowiedzią na inny wyzwanie przez edc65 .
Oto wersja bez golfa:
źródło
Python 3,
586547556506505502498497493 bajtówMoja pierwsza próba gry w golfa. Naprawdę nie jestem pewien, jaki sposób wybiorę, zwłaszcza
n
listę. Ale chciałem spróbować.Nie golfowany:
źródło
'minuit#une#deux#...#vingt-neuf#et demi'.split('#')
. Może być jeszcze krótszy, aby po prostu jakoś skompresować strunę.JavaScript (ES6),
506495 bajtówEdycja: skompresowany w
a
celu zaoszczędzenia kilku bajtów.Wyjaśnienie:
źródło
C
860 835794 bajtówAbsolutnie przerażające, ale prawdopodobnie mogą być jeszcze krótsze. Na tej stronie dodano wiele nowych linii do celów formatowania. Rzeczywisty kod źródłowy ma znaki nowej linii po #include i #defines, ale wszystko, począwszy od char * do ostatniego w („. \ N”);}, wszystko w jednym wierszu. Skróciłem go, usuwając wartości z 22, ..., 29 w tablicy ciągów, zamiast tego ponownie wykorzystując ciągi dla 2, ..., 9 i przygotowując "vingt-", gdy jest to właściwe. (Naprawdę mam nadzieję, że nie wprowadziłem błędu!)
Lubię to:
Wersja bez golfa, bez „optymalizacji przestrzeni” (również dość brzydka):
(Funkcja #if 0 była przeznaczona tylko do testowania różnych wartości czasu za pomocą wiersza poleceń).
źródło