前書き
tl; dr
この課題では、特定の日付の月の位相を計算する必要があります。
このチャレンジは、ゲームの 心理社会的視聴覚実験「Superbrothers:Sword&Sworcery EP」に触発されました。ではS:S&S EP一部のイベントは、時間内の特定のポイントでのみ起こるよう月の段階では冒険の成果にとって重要です。
問題は、特定の日にどの月相が存在するかです。新月から第1四半期、満月から第3四半期までの各主要段階は、約7.38日です。月周期全体はおよそ29.52日です。これらの値に基づいて、さまざまな計算方法が存在します。1
入力
- 1970年1月1日から2116年12月31日までのグレゴリオ暦に基づく日付。
- あなたは、次のいずれかの形式を選択することができます
yyyy-mm-dd
、dd.mm.yyyy
、dd/mm/yyyy
、yyyymmdd
またはddmmyyyy
。
出力
[0-7]
このゼロインデックスの配列に基づいて、月相のインデックスを出力します。
['New moon', 'Waxing crescent', 'First quarter', 'Waxing gibbous', 'Full moon', 'Waning gibbous', 'Third quarter', 'Waning crescent`]
必要条件
- プログラムや関数を書くことができます。無名関数を使用する場合は、それを呼び出す方法の例を含めてください。
- 入力は
STDIN
、コマンドライン引数から、関数パラメーターとして、または最も近い同等物から受け入れられます。 - これはコードゴルフなので、バイト単位の最短の回答が優先されます。
- ムーンフェーズを計算する組み込みライブラリまたは外部ライブラリは許可されていません。2
- 標準の抜け穴は許可されていません。
テスト
値は次のとおりです。 date | index of the phase | illumination | name
完全な月周期:
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
ランダムテストケース:
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
ほとんどの方法は科学的なレベルでは正確ではなく、また、この数日間、さまざまなWebサイトで混合結果が得られるため、結果が±1日の範囲内であれば問題ありません。
ボーナス
バイト数を減らして撤回する:
- 15% –セクション出力にリストされているフェーズの実際の名前を、インデックスの代わりに出力します。
- 25% –空の入力で空白または改行で区切られた次の新月と満月の日付を印刷します。
1例:ウィキペディアの計算フェーズ。
2すみませんMathematica。