Ktoś dał mojej żonie ozdobny kalendarz składający się z czterech kostek. Tutaj pokazuje z przodu dzisiejszą datę (od opublikowania tego wyzwania):
Kiedy zobaczyłem to po raz pierwszy, spojrzałem na nią pod niewłaściwym kątem (bezpośrednio z góry) i nie mogłem zrozumieć, dlaczego podał tę informację:
[["February", "January"], [3], [7], ["Monday", "Tuesday"]]
Twoim zadaniem jest odtworzenie mojego błędu dla dowolnej daty w 2019 roku.
Wyzwanie
Napisz program lub funkcję, która pobierze dowolną datę od 2019 roku i wyświetli to, co pojawi się na górze wszystkich kostek, gdy data ta będzie wyświetlana na zewnątrz przedniej części kalendarza.
Oto wszystkie sześć stron dla wszystkich kostek. Aby wyświetlić 6
, wystarczy odwrócić do 9
góry nogami. 0
Jest symetryczną pionowo, tak 0
nogami nadal 0
. Może być więcej niż jedna poprawna odpowiedź dla niektórych dat (np. Każdy jedenasty każdego miesiąca będzie miał więcej niż jeden sposób korzystania z kostek i innych 0
rzeczy), więc możesz podać dowolną poprawną odpowiedź.
Zasady
- Standardowe luki zabronione.
- Format wejścia / wyjścia jest elastyczny.
- Dane wyjściowe muszą być uporządkowane według kostki, ale nie w kostce. Najpierw musi być kostka miesiąca, następnie dwie kostki liczbowe, a następnie kostka dnia tygodnia. Ale gdy sześcian ma dwa elementy na górze, te dwa elementy mogą być w dowolnej kolejności.
- Możesz wymienić
January
naDecember
0-11 lub 1-12, jeśli chcesz. - Możesz zamienić dni tygodnia na 0-6 lub 1-7, jeśli chcesz, i możesz rozpocząć tydzień na
Sunday
lubMonday
(ale nie możesz rozpocząć tygodnia w innym dniu - to PPGC, a nie jakiś zwariowanego miasta.) - To jest kod-colf . Wygrywa najmniej bajtów dla każdego języka.
- Zachęca się do wyjaśnień.
Przypadki testowe
(Tue) 2019-01-29 [[ "July", "August" ], [3], [7], [ "Thursday", "Wednesday" ]]
[[ "August", "July" ], [3], [7], [ "Wednesday", "Thursday" ]]
etc. since the order within each cube doesn't matter.
(Thu) 2019-07-11 [[ "May", "June" ], [3], [8], [ "Saturday", "Friday" ]]
[[ "May", "June" ], [8], [3], [ "Saturday", "Friday" ]]
since the two 1 cubes could be either way.
(Sun) 2019-10-27 [[ "January", "February" ], [3], [6], [ "Friday", "Saturday" ]]
(Wed) 2019-05-01 [[ "March", "April" ], [8], [3], [ "Monday", "Tuesday" ]]
[[ "March", "April" ], [6], [3], [ "Monday", "Tuesday" ]]
[[ "March", "April" ], [9], [3], [ "Monday", "Tuesday" ]]
since the 0 cube could have either the 8 side or the 6 side facing up, and the 6 could also be considered a 9.
(Sat) 2019-08-24 [[ "February", "January" ], [8], [5], [ "Sunday" ]]
27
w2019-10-27
powinien udać się do36
nie32
.Odpowiedzi:
C (glibc) ,
327319286 bajtów(Dodano kilka podziałów linii dla zachowania przejrzystości)
f
zajmuje miesiąc (1–12) i dzień (1–31). Drukuje na standardowe wyjście.Wypróbuj online!Przypadki testowe:
Nie golfił
Kostki z cyframi
Oto możliwości dla cyfr:
Następujące mapowanie wydaje się najlepszym wyborem do gry w golfa:
Kody
strftime
ma być wywoływany zstruct tm
wejściem as. Zamiast tego oświadczamint S[9]
i używamS[4]
jakotm_mon
iS[6]
jakotm_wday
. Działa to, jeśli biblioteka C używa tej samej listy elementów struktury co standard ISO.s[99]
służy do przechowywania różnych ciągów znakówstrftime
, ale dzięki temuint
tablica oszczędza kilka bajtów podczas indeksowania.źródło
JavaScript (ES6), 142 bajty
Pobiera dane wejściowe jakm o n t h ma indeks 1, reY0 jest pierwszą cyfrą daty i reY1 jest drugą cyfrą.
(year, month, day0, day1)
gdzieZwraca, gdy0 na niedzielę. Jeśli drugi dzień tygodnia jest pusty, jest ustawiony na- 1 .
(month0, month1, day0, day1, weekDay0, weekDay1)
dni tygodnia są indeksowane za pomocą 0Wypróbuj online!
źródło