introduzione
tl; dr
In questa sfida devi calcolare la fase lunare per una determinata data.
Questa sfida è ispirata all'esperimento psico-sociale audiovisivo del gioco " Superbrothers: Sword & Sworcery EP ". In S: S&S EP le fasi lunari sono importanti per il risultato dell'avventura poiché alcuni eventi si verificano solo in un determinato momento.
La domanda è: quale fase lunare è presente in una data specifica. Ogni fase principale - dalla luna nuova al primo quarto alla luna piena al terzo trimestre - dura circa 7,38 giorni. L'intero ciclo lunare dura circa 29,52 giorni. Sulla base di questi valori esistono vari metodi di calcolo. 1
Ingresso
- Una data basata sul calendario gregoriano, tra il 1 ° gennaio 1970 e il 31 dicembre 2116.
- È possibile scegliere uno dei seguenti formati:
yyyy-mm-dd
,dd.mm.yyyy
,dd/mm/yyyy
,yyyymmdd
oddmmyyyy
.
Produzione
Emette l'indice [0-7]
della fase lunare in base a questo array a indice zero:
['New moon', 'Waxing crescent', 'First quarter', 'Waxing gibbous', 'Full moon', 'Waning gibbous', 'Third quarter', 'Waning crescent`]
Requisiti
- È possibile scrivere un programma o una funzione. Se utilizzi una funzione anonima, includi un esempio di come invocarlo.
- L'input è accettato dagli
STDIN
argomenti della riga di comando, come parametri di funzione o dall'equivalente più vicino. - Questo è code-golf, quindi la risposta più breve in byte vince.
- Non sono consentiti built-in o librerie esterne che calcolano la fase lunare. 2
- Le scappatoie standard non sono ammesse.
test
I valori sono: date | index of the phase | illumination | name
Un ciclo lunare completo:
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
Casi di test casuali:
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
Poiché la maggior parte dei metodi non è accurata a livello scientifico e si ottengono anche risultati contrastanti su diversi siti Web per un paio di questi giorni, è accettabile se i risultati rientrano nell'intervallo di ± 1 giorno .
indennità
Riduci il conteggio dei byte e ritira :
- 15% - Stampa il nome effettivo della fase come elencato nella sezione Output anziché il suo indice.
- 25% - Stampa le date della nuova luna piena e imminente separate da uno spazio bianco o da una riga nuova su input vuoto.
1 Ad esempio: fase di calcolo su Wikipedia.
2 Mi dispiace Mathematica .