Két vezér helyzete adott egy sakktáblán. Állapítsd meg, hogy állnak-e úgy, hogy meg tudják támadni egymást.
A sakkban a vezér azokat a bábukat tudja megtámadni, amelyek ugyanabban a sorban, oszlopban vagy átlóban vannak.
A sakktábla egy 8×8-as tömbbel ábrázolható.
Ha tehát azt mondják, hogy a fehér vezér a c5 mezőn áll (nullától indexelve a 2. oszlopban, a 3. sorban), a fekete vezér pedig az f2 mezőn (nullától indexelve az 5. oszlopban, a 6. sorban), akkor tudod, hogy az elrendezés így néz ki:
Arra is válaszolsz majd, hogy a vezérek meg tudják-e támadni egymást. Ebben az esetben a válasz igen, képesek rá, mert mindkét bábu ugyanabban az átlóban van.
A sakktábla képét habere-et-dispertire készítette LaTeX és Ulrike Fischer chessboard package csomagjának felhasználásával.
Néha szükség lehet arra, hogy kivételt dobj. Ilyenkor mindig adj meg egy beszédes hibaüzenetet, amely megmutatja, mi a hiba forrása. Ettől olvashatóbb lesz a kódod, és a hibakeresés is sokkal könnyebb. Ha tudod, hogy a hiba forrása egy adott típusú lesz, dönthetsz úgy, hogy a beépített hibatípusok egyikét dobod, de ilyenkor is adj meg beszédes üzenetet.
Ennél a feladatnál a raise utasítással kell „dobnod” a ValueErrors kivételeket, ha a Queen konstruktorának negatív számot adsz át, vagy olyan számot, amely nem érvényes sor vagy oszlop. A tesztek csak akkor lesznek sikeresek, ha raise-elsz egy exception-t, és üzenetet is mellékelsz hozzá. Akkor is raise-elned kell egy ValueError-t, ha a can_attack() metódusnak átadott mindkét királynő ugyanazon a helyen van.
Ha üzenettel együtt szeretnél ValueError-t dobni, írd az üzenetet az exception típus argumentumaként:
# if the row parameter is negative
raise ValueError("row not positive")
# if the row parameter is not on the defined board
raise ValueError("row not on board")
# if the column parameter is negative
raise ValueError("column not positive")
# if the column parameter is not on the defined board
raise ValueError("column not on board")
# if both the queens are on the same location
raise ValueError("Invalid queen position: both queens in the same square")
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.