Programozó versenyek

Informatikai versenyfeladatok, gyakorló feladatsor, 2012. február 20.

2012. március 1. 0:00 – 2012. április 1. 0:00

Aknakereső

Játszottál már Aknakeresőt? Ez egy aranyos kis játék, amely egy bizonyos operációs rendszer részeként jelent meg (az operációs rendszer nevére nem igazán emlékszünk). A játék célja, hogy megtaláljuk egy M × N-es mezőn az összes aknát. Segítségképpen a játék megmutatja, hogy bizonyos cellák szomszédságában hány akna található. Vegyük például az alábbi 4 × 4-es mezőt 2 aknával (amelyeket a „*” karakterrel jelölünk):

*...
....
.*..
....

Ha ugyanezt a mezőt a fent leírt segítő számokkal együtt adjuk meg, a következőt kapjuk:

*100
2210
1*10
1110

Ahogy arra már bizonyára rájöttél, minden cellának legfeljebb 8 szomszédja lehet.

A bemenet specifikációja

A bemenet tetszőleges számú tesztesetből áll. A tesztesetek első sora két egész számot tartalmaz, n-et és m-et (0 < nm ≤ 100), amelyek rendre a mező sorainak és oszlopainak a számát adják meg. A következő n sor mindegyike pontosan m karaktert tartalmaz, és a mezőt írják le. A biztonságos cellákat a „.” karakter, az aknákat tartalmazó cellákat pedig a „*” karakter jelöli (idézőjelek nélkül). Ha egy teszteset az n = m = 0 első sorral rendelkezik, akkor az a bemenet végét jelenti, és nem kell feldolgozni.

A kimenet specifikációja

Minden mezőre a következő üzenetet kell a kimenetre írni egy sorban (ahol x a mező sorszámát jelöli 1-ről indulva):

Field #x:

A következő n sorba a mezőt kell kiírni, a „.” karaktereket helyettesítve az adott cella szomszédos celláin található aknák számával. Az egyes mezők közé egy-egy üres sort kell kiírni.

Példa bemenet

  1. 4 4
  2. *...
  3. ....
  4. .*..
  5. ....
  6. 3 5
  7. **...
  8. .....
  9. .*...
  10. 0 0
letöltés szöveges állományként

A példa bemenethez tartozó kimenet

  1. Field #1:
  2. *100
  3. 2210
  4. 1*10
  5. 1110
  6. Field #2:
  7. **100
  8. 33200
  9. 1*100
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.