Вступ
тл; д-р
У цьому виклику ви повинні обчислити фазу місяця для даної дати.
Цей виклик натхненний ігровим психологічним аудіовізуальним експериментом " Superbrothers: Sword & Sworcery EP ". У S: S&S EP фази Місяця є важливими для результату пригоди, оскільки деякі події відбуваються лише в певний момент часу.
Питання: Яка місячна фаза присутня в конкретний день. Кожна основна фаза - від молодого місяця до першої чверті до повного місяця до третьої чверті - триває приблизно 7,38 дня. Весь місячний цикл становить приблизно 29,52 дня. На основі цих значень існують різні методи обчислення. 1
Вхідні дані
- Дата, заснована на григоріанському календарі, з 1 січня 1970 по 31 грудня 2116 року.
- Ви можете вибрати один з наступних форматів:
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
Оскільки більшість методів не є точними до наукового рівня, і ви також отримуєте неоднозначні результати на різних веб-сайтах за пару днів, прийнятно, якщо ваші результати знаходяться в межах ± 1 денного діапазону.
Бонус
Скоротіть кількість байтів і скасуйте :
- 15% - друкуйте фактичну назву фази, як зазначено у розділі Виведення замість її індексу.
- 25% - друкуйте дати майбутнього нового та повного місяця, розділених пробілом або новим рядком на порожньому введенні.
1 Наприклад: Етап обчислення у Вікіпедії.
2 Вибачте Mathematica .