2019-11-07 08:58:16 -05:00
|
|
|
class Queen:
|
2018-02-27 22:55:17 +08:00
|
|
|
def __init__(self, row, column):
|
2021-11-03 08:48:48 -07:00
|
|
|
if row < 0:
|
2021-11-23 14:05:17 +01:00
|
|
|
raise ValueError('row not positive')
|
2021-11-03 08:48:48 -07:00
|
|
|
if not 0 <= row <= 7:
|
2021-11-23 14:05:17 +01:00
|
|
|
raise ValueError('row not on board')
|
2021-11-03 08:48:48 -07:00
|
|
|
if column < 0:
|
2021-11-23 14:05:17 +01:00
|
|
|
raise ValueError('column not positive')
|
2021-11-03 08:48:48 -07:00
|
|
|
if not 0 <= column <= 7:
|
2021-11-23 14:05:17 +01:00
|
|
|
raise ValueError('column not on board')
|
2018-02-27 22:55:17 +08:00
|
|
|
self.row = row
|
|
|
|
|
self.column = column
|
2014-04-08 00:37:51 -03:00
|
|
|
|
2018-02-27 22:55:17 +08:00
|
|
|
def can_attack(self, another_queen):
|
2021-11-23 14:05:17 +01:00
|
|
|
idx = abs(self.row - another_queen.row)
|
|
|
|
|
edx = abs(self.column - another_queen.column)
|
|
|
|
|
if idx == edx == 0:
|
2021-11-03 08:48:48 -07:00
|
|
|
raise ValueError('Invalid queen position: both queens in the same square')
|
2021-11-23 14:05:17 +01:00
|
|
|
elif idx == edx or idx == 0 or edx == 0:
|
2018-02-27 22:55:17 +08:00
|
|
|
return True
|
|
|
|
|
else:
|
|
|
|
|
return False
|