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