Avertissement: L'histoire racontée dans cette question est entièrement fictive et inventée uniquement dans le but de fournir une intro.
Je suis un mauvais fermier, et pour faire monter le prix du blé dans ma région, j'ai décidé de brûler les champs de tous les fermiers autour de moi. J'aimerais vraiment voir les champs s'enflammer (afin que je puisse utiliser mon rire diabolique et me frotter les mains avec joie), mais je ne veux pas non plus être pris en train de regarder, alors j'ai besoin de vous pour simuler le champ incinéré pour moi.
Ta tâche:
Écrivez un programme ou une fonction qui prend en entrée un champ et renvoie les étapes de sa gravure jusqu'à ce que le champ entier soit en cendres. Une section spécifique du champ qui est en feu est représentée par un entier représentant l'intensité de la flamme. Un incendie commence à "1" et passe à "2" puis à "3", et ainsi de suite. Une fois qu'un incendie atteint «4», il attrape directement (non en diagonale) les zones adjacentes qui sont inflammables en feu. Une fois qu'il atteint "8", il s'éteint à la prochaine itération et se transforme en cendre, représentée par un "A". Lorsqu'une zone n'a pas encore été touchée par le feu, elle est représentée par un "0". Par exemple, si le champ ressemble à ceci:
100
000
Votre programme devrait produire ceci:
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
Si vous le souhaitez, vous pouvez remplacer les symboles ci-dessus par tout ensemble de symboles que vous choisissez, à condition qu'ils soient cohérents et distincts les uns des autres.
Contribution:
La position de départ du champ, sous n'importe quelle forme standard, telle qu'une chaîne délimitée par un retour à la ligne comme ci-dessus.
Sortie:
Le champ à chaque itération lors de sa gravure, soit sous forme de tableau, soit sous forme de chaîne délimitée par un caractère.
Cas de test:
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
Notation:
C'est le code-golf , le score le plus bas en octets gagne!