Uwaga: Historia opowiedziana w tym pytaniu jest całkowicie fikcyjna i wymyślona wyłącznie w celu wprowadzenia wstępu.
Jestem złym rolnikiem i aby podnieść cenę pszenicy w mojej okolicy, postanowiłem spalić pola wszystkich rolników wokół mnie. Naprawdę chciałbym zobaczyć, jak pola wybuchają w płomieniach (abym mógł użyć mojego złego śmiechu i pocierać moje ręce razem z radością), ale nie chcę też być przyłapany na oglądaniu, więc musisz symulować bycie polem spalone dla mnie.
Twoje zadanie:
Napisz program lub funkcję, która pobiera jako dane wejściowe pole i zwraca etapy jego spalania, aż całe pole zostanie popiołem. Określony odcinek płonącego pola jest reprezentowany przez liczbę całkowitą reprezentującą intensywność płomienia. Ogień zaczyna się od „1” i przechodzi do „2”, a następnie „3” i tak dalej. Gdy ogień osiągnie „4”, łapie wszelkie bezpośrednio (nie po przekątnej) sąsiednie obszary, które są łatwopalne w ogniu. Gdy osiągnie „8”, wypala się podczas następnej iteracji i zamienia się w popiół, reprezentowany przez „A”. Gdy obszar nie został jeszcze dotknięty przez ogień, jest reprezentowany przez „0”. Na przykład, jeśli pole wygląda tak:
100
000
Twój program powinien wypisać to:
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
Jeśli chcesz, możesz zastąpić powyższe symbole dowolnym wybranym przez siebie zestawem symboli, o ile są one spójne i różnią się od siebie.
Wkład:
Pozycja początkowa pola, w dowolnej standardowej formie, na przykład ciąg znaków rozdzielany znakami jak wyżej.
Wydajność:
Pole w każdej iteracji podczas spalania, albo jako tablica, albo jako ciąg ograniczony przez jakiś znak.
Przypadki testowe:
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
Punktacja:
To jest golf golfowy , najniższy wynik w bajtach wygrywa!