Предмет: Информатика, автор: polygalovadarya

Написать на языке Питон
12.286.*Шахматную доску будем представлять в виде квадратного символьного массива
размером 8х8. Даны натуральные числа V и g1, указывающие номера верти-
кали (при счете слева направо) и горизонтали (при счете снизу вверх) для поля,
на котором стоит белая шахматная фигура, и числа V2 и g2 указывающие
соответствующие координаты второй, черной, фигуры (15 v 58, 15g 58,
15v S8, 15gz 58). Определить поля (отметить их символом "+"), на которые
может пойти первая фигура, не попав под удар второй фигуры. Рассмотреть сле-
дующие варианты сочетаний первой и второй фигур:
л) конь и ферзь;
м) конь и слон;
н) слон и слон;
о) слон и ферзь;
п) слон и конь;
а) ладья и ладья;
б) ладья и ферзь;
в) ладья и конь;
г) ладья и слон;
д) ферзь и ферзь;
е) ферзь и ладья;
ж) ферзь и конь;
3) ферзь и слон;
и) конь и конь;
к) конь и ладья;
р) слон и ладья;
с) король и слон;
т) король и ферзь;
y) король и конь;
ф) король и ладья.

Приложения:

Ответы

Автор ответа: ptpit
0

Пример решения задачи для первого варианта (конь и ферзь):

# Создаем шахматную доску

board = [['-' for _ in range(8)] for _ in range(8)]

# Устанавливаем фигуры на доску

v1, g1 = 2, 3 # Координаты белого коня

v2, g2 = 4, 4 # Координаты черного ферзя

board[v1][g1] = 'K'

board[v2][g2] = 'Q'

# Функция для проверки, может ли фигура находиться на данном поле

def can_be_placed(piece, row, col):

   if piece == 'K':

       # Конь может ходить на поле, если разница между вертикалью и горизон-

       # талью равна 2 и 1 соответственно, или наоборот

       if abs(row - v2) == 2 and abs(col - g2) == 1 or \

          abs(row - v2) == 1 and abs(col - g2) == 2:

           return True

   elif piece == 'Q':

       # Ферзь может ходить на поле, если оно находится на одной вертикали,

       # горизонтали или диагонали с ним

       if row == v2 or col == g2 or \

          abs(row - v2) == abs(col - g2):

           return True

   return False

# Проверяем каждое поле доски и отмечаем возможные ходы коня и ферзя

for row in range(8):

   for col in range(8):

       if can_be_placed('K', row, col) or can_be_placed('Q', row, col):

           board[row][col] = '+'

# Выводим доску с отмеченными ходами

for row in board:

   print(' '.join(row))

Аналогично можно решить и другие варианты сочетаний фигур, заменив функцию can_be_placed на соответствующую функцию для каждой фигуры.

Похожие вопросы