Напишіть найкоротшу програму, щоб перетворити будь-який твір мистецтва ASCII в анімовану снігову сцену, яка починає формуватися із снігу, що падає ( приклад JavaScript без гольфу востаннє оновлений 2011-12-19).
Специфікація вводу : Ваша програма повинна приймати довільні комбінації пробілів, зірочок та нових рядків. Вхід буде містити не більше 23 рядків і 80 символів на рядок. Порожніх рядків не буде, але рядки можуть складатися лише з пробілів. Буде включений єдиний зворотний рядок, який потрібно ігнорувати.
Вихід : Виведіть символи ASCII (пробіли, зірочки) та контрольні коди (повернення каретки, канали ліній, коди виходу ANSI тощо) для текстової консолі або емулятора терміналу, поки користувач вручну не припинить програму. Ви можете припустити, що вікно терміналу розміром 80x24 символів, якщо ваша операційна система дозволяє це налаштування.
Правила :
- Анімація повинна бути гладкою та швидкою (бажано 15 кадрів в секунду).
- Щільність снігу повинна бути від 5% до 15%.
- Не більше одного екрану снігу може прокручуватися в секунду. (Це означає, що за один другий часовий період може бути додано не більше 24 рядів нового снігу.)
- Сніг не повинен відображати жодного очевидного малюнка, коли він входить у верхню частину екрана; це повинно виглядати випадково.
- Програма повинна заповнити всі рядки екрана снігом якомога швидше, коли він запускається; початкове заповнення окремих рядків екрана не повинно бути очевидним для глядача.
- Лівий нижній кут вхідного зображення ASCII повинен знаходитися в лівому нижньому куті екрана (рис. 1 для подальшого уточнення).
- Зона всередині або під арт. ASCII не повинна бути назавжди заповнена зірочками. Однак зірочки можуть (але не обов'язкові) прокручувати цю область.
- Сніг не повинен накопичуватися внизу екрана або поверх існуючого снігу, за винятком випадків, зазначених у вводі.
- Нижні пробіли повинні бути заповнені перед верхніми, оскільки заповнення пробілів у протилежному порядку робить анімацію ялинки дуже відрізняється від вихідного мого коду. (додано 2011-12-20)
Щасливих свят!
Малюнок 1: Мітки областей екрана 80x24
---------------------------New snow added on this line--------------------------
|
|
----------------------------------------------------------+ |
**** | |
Snow MUST fall Snow MAY fall ----------------> **** | |
through this through these **** **** | Snow MUST fall |
area. areas of a **** **** | through this |
completed \---------> **** ****| area. |
ASCII art scene. \ *** **** ****| |
area \ \ ******* **** ****| |
\ \ ******** *** ***| (ALL CAPS terms |
(located in \ \--> ********* *** | have standard |
lower left \ ******* ****** MAY | RFC 2119 |
corner of \ ************* ** fall | meanings.) |
screen) \ *********** here | |
*** +---> **** *** | |
*** | **************** *** | |
| Snow MUST fall *** | **************** *** | |
| through this *** +---> *** | |
| area. *** | **************** *** | |
--+---------------------+*** +---> ***+----+------------------+--
| Snow MUST NOT |****************************| Snow MUST NOT |
V accumulate here. |****************************| accumulate here. V
Приклади входів
Код Гольф Банер
****** ******* ******** ******** ****** ******* ** ********
** ** ** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ****** ** **** ** ** ** ******
** ** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** ** ** ** **
****** ******* ******** ******** ****** ******* ******** **
Логотип переповнення стека
****
****
**** ****
**** ****
**** ****
*** **** ****
******* **** ****
******** *** ***
********* ***
******* ******
************* **
***********
*** **** ***
*** **************** ***
*** **************** ***
*** ***
*** **************** ***
*** ***
****************************
****************************
Ялинки
*
*** *
* ***** ***
*** ******* * *****
***** ********* *** *
* *********** *****
* ************* *******
* *** *************** * *
*** ***** ***************** ***
***** ******* ******************* *****
******* * ********************* *******
********* * *********
* *