Introdução
tl; dr
Neste desafio, você deve calcular a fase da lua para uma determinada data.
Este desafio é inspirado no experimento psicológico social audiovisual do jogo " Superbrothers: Sword & Sworcery EP ". No S: S&S EP, as fases da lua são importantes para o resultado da aventura, pois alguns eventos ocorrem apenas em um momento específico.
A questão é: Qual fase lunar está presente em uma data específica. Cada fase principal - da lua nova ao primeiro trimestre da lua cheia ao terceiro trimestre - dura cerca de 7,38 dias. Todo o ciclo lunar é de aproximadamente 29,52 dias. Com base nesses valores, existem vários métodos de cálculo. 1
Entrada
- Data baseada no calendário gregoriano, entre 1 de janeiro de 1970 e 31 de dezembro de 2116.
- Você pode escolher um dos seguintes formatos:
yyyy-mm-dd
,dd.mm.yyyy
,dd/mm/yyyy
,yyyymmdd
ouddmmyyyy
.
Resultado
Emita o índice [0-7]
da fase lunar com base nesta matriz indexada em zero:
['New moon', 'Waxing crescent', 'First quarter', 'Waxing gibbous', 'Full moon', 'Waning gibbous', 'Third quarter', 'Waning crescent`]
Exigências
- Você pode escrever um programa ou uma função. Se você optar por uma função anônima, inclua um exemplo de como invocá-la.
- A entrada é aceita de
STDIN
, argumentos de linha de comando, como parâmetros de função ou do equivalente mais próximo. - Este é o código-golfe, pelo que a resposta mais curta em bytes vence.
- Bibliotecas internas ou externas que calculam a fase da lua não são permitidas. 2
- As brechas padrão não são permitidas.
Testes
Os valores são: date | index of the phase | illumination | name
Um ciclo lunar 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
Casos de teste aleatórios:
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
Como a maioria dos métodos não é precisa para um nível científico e você também obtém resultados variados em sites diferentes por alguns dias, é aceitável se os resultados estiverem dentro de um intervalo de ± 1 dia .
Bônus
Reduza a contagem de bytes e retire :
- 15% - Imprima o nome real da fase, conforme listado na seção Saída em vez de seu índice.
- 25% - Imprima as datas da próxima lua nova e cheia, separadas por um espaço em branco ou nova linha na entrada vazia.
1 Por exemplo: Fase de cálculo na Wikipedia.
2 Desculpe, Mathematica .