Давайте зробимо графічний годинник та календар ASCII, який повідомляє нам про поточний місяць, день місяця, день тижня, годину, хвилину, а також чи ніч чи день (але не рік чи другий).
У будь-який конкретний час календар буде виглядати приблизно так: (краще виглядає з меншим інтервалом між рядками)
________________________________________________________________
|\ ____________________________________________________________ /|
| | ___ | |
| | _( ) | |
| | (___)__) -.- | |
| | | |
| | | |
| | -.- | |
| | -.- | |
| | ___ | |
| | _( ) | |
| | (___)__) | |
| | | |
| | ___ | |
| | _( ) | |
| | _ (___)__) | |
| | /|\ | |
| | / | \ | |
| | /__|__\ | |
| |____|____ | |
| |\_______/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-~~-~~~~~| |
| |____________________________________________________________| |
|/______________________________________________________________\|
Це завжди кадр картинок 66 на 23 символи, межа якого ніколи не змінюється.
Зображення в кадрі повідомляє нам час і дату:
- Протягом дня (6:00 - 17:59) місяць визначається кількістю птахів (
-.-
) на небі. Січень = 1 птах, лютий = 2 птахи тощо. - За ніч (18:00 - 5:59 ранку) птахів заміняють у 3 рази більше зірок (
*
). Січень = 3 зірки, лютий = 6 зірок і т. Д. Птахи і зірки ніколи не бувають на небі одночасно. - День місяця визначається кількістю символів між двома тиреми (
-
) на воді. наприклад~~-~~~~-~~
означає, що це четвертий день місяця. Залежно від хвилини, човен, можливо, знадобиться знаходитись між тиреми (тире не крутиться навколо). - День тижня визначається кількістю хмар на небі (всі хмари виглядають однаково). Неділя = 0 хмар , понеділок = 1 хмара, ..., субота = 6 хмар.
- Година визначається рівнем води (і човна). Найнижча (як вище) - 1 година, протягом 2 годин - на один символ вище, і так далі до 12 годин, потім назад до 1 годинника. (Це годинник 12, а не 24 години.)
- Хвилина визначається горизонтальним положенням човна. Вгорі години човен торкається лівого краю рамки (як вище). З кожною наступною хвилиною човен рухається прямо на одного персонажа. За хвилини 51 до 59 він замикається з правого боку кадру назад вліво.
Отже, враховуючи, що у наведеному вище прикладі є 3 птахи, 3 хмари, 2 знаки між тире, вода на нижньому рівні та човен в лівій частині, ми можемо сказати, що дата - середа, 2 березня, а час - 1: 00 вечора.
Ось ще один приклад з неділі 25 квітня о 3:58 ранку:
________________________________________________________________
|\ ____________________________________________________________ /|
| | | |
| | * * | |
| | * * * | |
| | * | |
| | | |
| | * | |
| | * * | |
| | | |
| | * | |
| | | |
| | * | |
| | _ | |
| | /|\ * | |
| |/ | \ | |
| |__|__\ /| |
| |__|____ __| |
| |______/~~~~~~~~~~~~~~~~~~~-~~~~~~~~~~~~~~~~~~~~~~~~~-~~~~~\_| |
| | | |
| | | |
| |____________________________________________________________| |
|/______________________________________________________________\|
Мета
Ваша мета - написати якомога коротшу програму, яка виводить ці календарі мистецтва ASCII для stdout, використовуючи час запуску програми.
Кожен запуск програми повинен виводити одну часову сцену. Оновлення не повинні бути автоматичними (або анімованими).
Хмари, зірки та птахи повинні розміщуватися випадковим чином у небі (тому кожен пробіг, навіть один і той же час, ймовірно, буде різним). Вони ніколи не повинні перекривати човен чи один одного. (Також водяні тире не повинні перекривати корпус човна.)
Зауважте, що нічого, що я описав, не з’являється під водою. Це вам потрібно зробити. Протягом однієї заздалегідь визначеної години щотижня (на ваш вибір) щось цікаве слід малювати під водою. Це може бути морське чудовисько, затонуле судно чи що завгодно, саме вам. Протягом цієї години ви навіть можете змінити дизайн решти сцени (залишаючись у межах кадру).
Оцінка балів
Це комбо-конкурс популярності-конкурс популярності.
Ваш рахунок (bytes in program) - 4 * (upvotes - downvotes)
. Виграє найнижчий бал.
Використовуйте http://mothereff.in/byte-counter як лічильник байтів, якщо ви використовуєте символи, що не належать до ASCII.
Примітки та оновлення
Ви можете використовувати буї замість тире, оскільки, давайте їм обличчя, вони набагато доречніші:
| | ~~(_)~~~(_)~~ (3rd of the month)
Дефіси (або буї) не повинні бути випадковими, але було б добре, якби вони були.
- Ваша "особлива година" повинна тривати 60 хвилин від вершини години до 1 хвилини до наступної години.
- Протягом особливої години речі, які ви малюєте під водою, можуть рухатися і можуть змінювати поверхню та небо, коли це має сенс (наприклад, морське чудовисько їсть човен, утворюється чорна діра на морському дні тощо).