#python #python-3.x #algorithm #data-structures #chess
#питон #python-3.x #алгоритм #структуры данных #шахматы
Вопрос:
Выполните следующую функцию, чтобы проверить ход данной шахматной фигуры, и верните True (логическое значение), если ход действителен, или False(логическое значение), если ход недействителен. Шахматная доска приведена ниже для вашей справки.
Функция принимает 3 аргумента
фигура может быть «Конем» или «Слоном».
currentpos(строка) представляет собой комбинацию строки и столбца, это может быть что угодно между «a1» и «h8». currentpos представляет ячейку на шахматной доске, где в данный момент находится фигура
nextpos(строка) также представляет собой комбинацию строки и столбца и также может находиться в диапазоне от «a1» до «h8». nextpos представляет ячейку, в которую должен быть перемещен фрагмент
Мне трудно понять этот вопрос. Может ли кто-нибудь подсказать мне правильный подход к этой проблеме?
def valid_move_or_not(piece,currentpos,nextpos): #Write your code here return True if __name__=='__main__': #you can run your tests here print(valid_move_or_not("Knight","a1","a2"))
Комментарии:
1. Вот вспомогательный вопрос: может ли рыцарь перейти от
a1
кa2
? (и почему).
Ответ №1:
Он просит вас закодировать правило перемещения шахматных фигур. Вы можете погуглить, если вы не знакомы с шахматами.
В качестве простого примера вы можете проверить правильность хода Ладьи, как показано ниже
def valid_move_or_not(piece,currentpos,nextpos): if currentpos == nextpos: return False if piece == 'Rook': return (currentpos[0] == nextpos[0]) or (currentpos[1] == nextpos[1])
Комментарии:
1. Я все еще не мог понять логику найта и бишопа. Ваша помощь будет очень признательна.
2. @Лукас, возможно, начать с Бишопа проще. Слон перемещается по диагонали, что изменяет обе координаты на одинаковую величину (в абс-значении)
3. Это слишком просто, что делать, если между начальным и конечным квадратом есть фигуры?