Саша007228666
12.04.2021 08:32

доработать код на питон Рокировка — особая разновидность шахматного хода, при котором ладья, находившаяся на начальной позиции, вплотную подходит к своему королю, который «перепрыгивает» через ладью вдоль линии её движения. При этом король перемещается не на одно поле, как обычно, а на два.
Необходимым условием рокировки является то, что ни король, ни участвующая в манёвре ладья не должны были сдвигаться со своего места до совершения рокировки. Если ладья сдвигалась с начальной позиции, рокировка с её участием становится невозможной. Если сдвигался король, обе рокировки становятся невозможными.
Реализуйте два метода, board.castling0() и board.castling7(). Метод castling0 пробует выполнить рокировку для игрока текущего цвета с ладьёй из колонки 0, castling7 — из колонки 7.
Если рокировка возможна, следует выполнить её и вернуть True, если нет — только вернуть False.
В тестах для уменьшения их объёма и сложности начальная расстановка фигур перезаписывается и заменяется на более простую. Однако гарантируется, что начальные положения короля и ладей, если они есть на доске, соответствуют шахматным правилам.

Пример 1
Ввод Вывод
from solution import (
Board, Pawn, Rook, King, Knight, Bishop, Queen,
WHITE, BLACK
)

board = Board()
board.field = [([None] * 8) for i in range(8)]
board.field[0][0] = Rook(WHITE)
board.field[0][4] = King(WHITE)
board.field[0][7] = Rook(WHITE)

board.field[7][0] = Rook(BLACK)
board.field[7][4] = King(BLACK)
board.field[7][7] = Rook(BLACK)

print('before:')
for row in range(7, -1, -1):
for col in range(8):
char = board.cell(row, col)[1]
print(char.replace(' ', '-'), end='')
print()
print()

print("Рокировка")
print(board.castling0())
print(board.castling7())

for row in range(7, -1, -1):
for col in range(8):

Код программы:
from solution import (
Board, Pawn, Rook, King, Knight, Bishop, Queen,
WHITE, BLACK
)

board = Board()
board.field = [([None] * 8) for i in range(8)]
board.field[0][0] = Rook(WHITE)
board.field[0][4] = King(WHITE)
board.field[0][7] = Rook(WHITE)

board.field[7][0] = Rook(BLACK)
board.field[7][4] = King(BLACK)
board.field[7][7] = Rook(BLACK)

print('before:')
for row in range(7, -1, -1):
for col in range(8):
char = board.cell(row, col)[1]
print(char.replace(' ', '-'), end='')
print()
print()

print("Сдвиги ладей")
board.move_piece(0, 0, 0, 1)
board.move_piece(7, 0, 7, 1)
print(board.castling0())
print(board.castling7())

for row in range(7, -1, -1):
for col in range(8):
char = board.cell(row, col)[1]
print(char.replace(' ', '-'), end='')
print()
print()

print(board.castling0())
print(board.castling7())

for row in range(7, -1, -1):
for col in range(8):
char = board.cell(row, col)[1]
print(char.replace(' ', '-'), end='')
print()

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Использовать источники открытого огня (спички, зажигаприносить на уроки легковоспламеняющиеся вещества (лаки, краски, порох и т.п.); лки, петарды и др.); работать с электроприборами, имеющими повреждения корпуса или изоляции соединительных проводов; вставлять в отверстие приборов посторонние предметы; приносить и самовольно подключать какое-либо оборудование; производить самовольное переключение разъёмов оборудования; вставлять в отверстие приборов посторонние предметы; работать с электроприборами, имеющими повреждения корпуса или изоляции соединительных проводов;
0,0(0 оценок)
Ответ:
Noooo123456
27.09.2022 21:02

program raf105;

var

 s,s1,s2: string;

 slov,numb,i,j,l: integer;

begin

writeln('Введите строку:');

readln(s);

s:= lowercase(s);

s1:= '';

s2:= '1234567890';

while j<>-1 do

begin

 j+= 1;

 l+= 1;

 for i:=1 to length(s1) do

   if (s[j] = s1[i]) and (slov = 0)

     then slov+= 1

     else if (i<=length(s2)) and (s[j] = s2[i])

     then numb+=1;

 if s[j+1] = ' '

   then j:= -1;

end;

for i:=l+1 to length(s) do

begin

 if s[i] = ' '

   then

   begin

     for j:=1 to length(s1) do

       if s[i+1] = s1[j]

         then slov+= 1;

   end

   else

   begin

     for j:=1 to length(s2) do

       if s[i] = s2[j]

         then numb+=1;

   end;;

end;

writeln;

writeln('В строке:');

writeln(slov,' сл.');

writeln(numb,' циф.');

end.

Язык PascalABC
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота