Wprowadzenie
tl; dr
W tym wyzwaniu musisz obliczyć fazę księżyca dla danej daty.
To wyzwanie jest inspirowany przez gry psycho społecznego eksperymentu audiowizualny „ Superbrothers: Sword & Sworcery EP ”. W S: S&S EP fazy księżyca są ważne dla wyniku przygody, ponieważ niektóre wydarzenia mają miejsce tylko w określonym momencie.
Pytanie brzmi: która faza księżycowa jest obecna w określonym dniu. Każda główna faza - od nowiu przez pierwszy kwartał do pełni księżyca i trzeci kwartał - trwa około 7,38 dnia. Cały cykl księżycowy trwa około 29,52 dni. W oparciu o te wartości istnieją różne metody obliczania. 1
Wejście
- Data oparta na kalendarzu gregoriańskim, między 1 stycznia 1970 r. A 31 grudnia 2116 r.
- Można wybrać jeden z następujących formatów:
yyyy-mm-dd
,dd.mm.yyyy
,dd/mm/yyyy
,yyyymmdd
lubddmmyyyy
.
Wynik
Wyprowadza indeks [0-7]
fazy księżycowej na podstawie tej tablicy o indeksie zerowym:
['New moon', 'Waxing crescent', 'First quarter', 'Waxing gibbous', 'Full moon', 'Waning gibbous', 'Third quarter', 'Waning crescent`]
Wymagania
- Możesz napisać program lub funkcję. Jeśli korzystasz z funkcji anonimowej, podaj przykład jej wywołania.
- Dane wejściowe są akceptowane z
STDIN
argumentów wiersza poleceń jako parametrów funkcji lub z najbliższego odpowiednika. - To jest golf golfowy, więc wygrywa najkrótsza odpowiedź w bajtach.
- Wbudowane lub zewnętrzne biblioteki obliczające fazę księżyca są niedozwolone. 2)
- Standardowe luki są niedozwolone.
Testy
Wartości są następujące: date | index of the phase | illumination | name
Pełny cykl księżycowy:
08.02.2016 | 0 | 0% | New moon
07.02.2016 | 7 | 2% | Waning crescent
07.02.2016 | 7 | 2% | Waning crescent
06.02.2016 | 7 | 6% | Waning crescent
05.02.2016 | 7 | 12% | Waning crescent
04.02.2016 | 7 | 19% | Waning crescent
03.02.2016 | 7 | 28% | Waning crescent
02.02.2016 | 7 | 37% | Waning crescent
01.02.2016 | 6 | 47% | Third quarter
31.01.2016 | 5 | 56% | Waning gibbous
30.01.2016 | 5 | 65% | Waning gibbous
29.01.2016 | 5 | 74% | Waning gibbous
28.01.2016 | 5 | 82% | Waning gibbous
27.01.2016 | 5 | 89% | Waning gibbous
26.01.2016 | 5 | 94% | Waning gibbous
25.01.2016 | 5 | 98% | Waning gibbous
24.01.2016 | 4 | 100% | Full moon
23.01.2016 | 3 | 100% | Waxing gibbous
22.01.2016 | 3 | 97% | Waxing gibbous
21.01.2016 | 3 | 93% | Waxing gibbous
20.01.2016 | 3 | 86% | Waxing gibbous
19.01.2016 | 3 | 77% | Waxing gibbous
18.01.2016 | 3 | 67% | Waxing gibbous
17.01.2016 | 3 | 56% | Waxing gibbous
16.01.2016 | 2 | 45% | First quarter
15.01.2016 | 1 | 33% | Waxing crescent
14.01.2016 | 1 | 23% | Waxing crescent
13.01.2016 | 1 | 14% | Waxing crescent
12.01.2016 | 1 | 7% | Waxing crescent
11.01.2016 | 1 | 2% | Waxing crescent
10.01.2016 | 0 | 0% | New moon
Przypadkowe przypadki testowe:
14.12.2016 | 4 | 100% | Full moon
16.10.1983 | 3 | 75% | Waxing gibbous
04.07.1976 | 2 | 47% | First quarter
28.11.1970 | 0 | 0% | New moon
Ponieważ większość metod nie jest dokładna na poziomie naukowym, a przez kilka dni otrzymujesz mieszane wyniki na różnych stronach internetowych, dopuszczalne jest, aby wyniki mieściły się w zakresie ± 1 dnia .
Premia
Zmniejsz liczbę bajtów i wycofaj :
- 15% - Wydrukuj rzeczywistą nazwę fazy zgodnie z listą w sekcji Wyjście zamiast jej indeksu.
- 25% - Wydrukuj daty nadchodzącego nowiu i pełni księżyca oddzielone białymi spacjami lub znakami nowej linii na pustych danych wejściowych.
1 Na przykład: Faza obliczania na Wikipedii.
2 Przepraszam Mathematica .
Odpowiedzi:
Python
23,255204180178 bajtówTa odpowiedź jest niedokładna w ciągu jednego lub dwóch dni w kilku miejscach, w tym w niektórych przypadkach testowych, chociaż powiedziano mi, że pewne niedokładności są dopuszczalne. W każdym razie ruch księżyca nigdy nie jest bardzo dokładny, a funkcja ta pozostaje ogólnie poprawna (a przynajmniej nie zmienia się zbyt daleko).
Edycja: W trakcie poprawiania mojego kodu i zwiększania jego dokładności znacznie go poprawiłem.
Edycja: Ten kod jest teraz jednowierszowym programem w języku Python 3. ( Podziękowania dla TimmyD za nazwę „magiczne liczby”)
Nie golfowany:
źródło