Kurzusok
/
Python
Python
/
Feladatok
/
Királynőtámadás
Királynőtámadás

Királynőtámadás

Könnyű

Utasítások

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:

Sakktábla két vezérrel. A c5 mezőn álló vezérből kiinduló nyilak mutatják a lehetséges ütési irányokat vonal, sor és átló mentén.

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.

Köszönet

A sakktábla képét habere-et-dispertire készítette LaTeX és Ulrike Fischer chessboard package csomagjának felhasználásával.

Kivételüzenetek

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")
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Python Exercism

Készen állsz elkezdeni a(z) Királynőtámadás feladatot?

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.