Az Aknakereső egy népszerű játék, amelyben a játékosnak számokkal jelzett tippek segítségével kell megtalálnia az aknákat. A tippek azt mutatják meg, hogy hány akna szomszédos közvetlenül egy mezővel (vízszintesen, függőlegesen vagy átlósan).
A feladatod, hogy egy kész Aknakereső-tábla üres mezőire ráírd a szomszédos aknák számát.
Maga a tábla egy téglalap, amely üres (' ') vagy aknát ('*') tartalmazó mezőkből áll.
Minden üres mezőnél számold meg, hány akna van mellette (vízszintesen, függőlegesen, átlósan). Ha az üres mező mellett nincs akna, hagyd üresen. Ellenkező esetben írd rá a szomszédos aknák számát.
Például kaphatsz egy ilyen 5 x 4-es táblát (itt az üres helyeket a '·' karakter jelöli, hogy a képernyőn láthatók legyenek):
·*·*·
··*··
··*··
·····
Amelyet a kódodnak át kell alakítania ebbe:
1*3*1
13*31
·2*2·
·111·
Néha szükség lehet arra, hogy kivételt dobj. Amikor ezt teszed, mindig adj meg egy beszédes hibaüzenetet, amely megmutatja, mi a hiba forrása. Ez olvashatóbbá teszi a kódot, és sokat segít a hibakeresésben. Ha tudod, hogy a hiba forrása egy adott típusú lesz, választhatsz a beépített hibatípusok közül, de ilyenkor is adj meg beszédes üzenetet.
Ennél a feladatnál a raise utasítással kell „dobnod” egy ValueError-t, amikor a board() függvény hibás formátumú bemenetet kap. A tesztek csak akkor futnak le sikeresen, ha raise-eled az exception-t, és üzenetet is fűzöl hozzá.
Ahhoz, hogy üzenettel együtt dobj ValueError-t, az üzenetet argumentumként add át az exception típusnak:
# when the board receives malformed input
raise ValueError("The board is invalid with current input.")
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Python nyelvet 17 fogalom146 feladat segítségével, valódi emberi mentorálással, mindez ingyen.
Felfedezzük az egymásba ágyazott for-ciklusokat, a min/max ügyes használatát a határellenőrzés egyszerűsítésére, a funkcionális pipeline-okat és a kétdimenziós mátrixok használatát.