ASCIIアートのあらゆる部分を、雪が降ってから形成され始めるアニメーションの雪景色に変える最短のプログラムを作成します(ゴルフ以外のJavaScriptの例は、 2011-12-19に最終更新されました)。
入力仕様:プログラムは、スペース、アスタリスク、および改行の任意の組み合わせを受け入れる必要があります。入力には、最大23行と1行あたり80文字が含まれます。空行はありませんが、行は空白のみで構成されます。単一の末尾の改行が含まれるため、無視する必要があります。
出力:ユーザーが手動でプログラムを終了するまで、オペレーティングシステムのテキストコンソールまたはターミナルエミュレーターのASCII文字(スペース、アスタリスク)および制御コード(キャリッジリターン、ラインフィード、ANSIエスケープコードなど)を出力します。オペレーティングシステムがその設定を許可している場合、ターミナルウィンドウは80x24文字であると想定できます。
ルール:
- アニメーションは滑らかで高速でなければなりません(15 fpsを推奨)。
- 雪の密度は5〜15%でなければなりません。
- 1秒間にスクロールできる雪の画面は1つだけです。(つまり、1秒間に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
入力例
コードゴルフバナー
****** ******* ******** ******** ****** ******* ** ********
** ** ** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ****** ** **** ** ** ** ******
** ** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** ** ** ** **
****** ******* ******** ******** ****** ******* ******** **
スタックオーバーフローロゴ
****
****
**** ****
**** ****
**** ****
*** **** ****
******* **** ****
******** *** ***
********* ***
******* ******
************* **
***********
*** **** ***
*** **************** ***
*** **************** ***
*** ***
*** **************** ***
*** ***
****************************
****************************
クリスマスツリー
*
*** *
* ***** ***
*** ******* * *****
***** ********* *** *
* *********** *****
* ************* *******
* *** *************** * *
*** ***** ***************** ***
***** ******* ******************* *****
******* * ********************* *******
********* * *********
* *