免責事項:この質問の中で語られたストーリーは完全に架空のものであり、イントロを提供する目的でのみ発明されました。
私は邪悪な農民であり、私の地域で小麦の価格を引き上げるために、私は私の周りのすべての農民の畑を燃やすことにしました。私は本当に野原が炎上するのを見たいです(したがって、私は私の邪悪な笑いを使用して、喜びと手を一緒にこすることができます)私のために焼却された。
あなたのタスク:
入力としてフィールドを取り、フィールド全体が灰になるまで書き込みの段階を返すプログラムまたは関数を作成します。燃えているフィールドの特定のセクションは、炎の強度を表す整数で表されます。火災は「1」から始まり、「2」、次に「3」へと続きます。火災が「4」に達すると、火災で可燃性である直接(斜めではない)隣接エリアをキャッチします。「8」に達すると、次の反復で燃え尽き、「A」で表される灰に変わります。エリアがまだ火に触れていない場合、「0」で表されます。たとえば、フィールドが次のような場合:
100
000
あなたのプログラムはこれを出力するはずです:
100
000
200
000
300
000
410
100
520
200
630
300
741
410
852
520
A63
630
A74
741
A85
852
AA6
A63
AA7
A74
AA8
A85
AAA
AA6
AAA
AA7
AAA
AA8
AAA
AAA
必要に応じて、一貫性があり互いに異なる限り、上記の記号を選択した記号のセットに置き換えることができます。
入力:
上記の改行で区切られた文字列など、標準形式のフィールドの開始位置。
出力:
配列として、または何らかの文字で区切られた文字列として、書き込みのたびに繰り返されるフィールド。
テストケース:
0301
000A
555
|
v
0301
000A
555
1412
010A
666
2523
020A
777
3634
030A
888
4745
141A
AAA
5856
252A
AAA
6A67
363A
AAA
7A78
474A
AAA
8A8A
585A
AAA
AAAA
6A6A
AAA
AAAA
7A7A
AAA
AAAA
8A8A
AAA
AAAA
AAAA
AAA
得点:
これはcode-golfで、バイト単位の最低スコアが勝ちです!