1.3 Szach wieżą w pliku przykładowym
Matura pokazowa marzec 2022 - Matura z informatyki: arkusze krok po kroku (Python)
Zadanie 1.3 (4 pkt): wieża szachuje króla przeciwnika, gdy stoi z nim w tym samym wierszu albo kolumnie i między nimi nie ma innej bierki. Funkcja `checks` idzie od każdej wieży w czterech kierunkach po pustych polach; pierwsza napotkana bierka decyduje. Policz plansze, na których biała wieża (`W`) szachuje czarnego króla (`k`), i plansze, na których czarna wieża (`w`) szachuje białego króla (`K`). Dla pliku przykładowego: 2 0.
with open("szachy_przyklad.txt") as f:
lines = [line.strip() for line in f]
boards = []
for k in range(0, len(lines) - 7, 9): # 8 wierszy planszy, potem pusty wiersz
boards.append(lines[k:k + 8])
# 1.3 od wieży idziemy w czterech kierunkach po pustych polach do pierwszej bierki
def checks(board, rook, king):
for r in range(8):
for c in range(8):
if board[r][c] == rook:
for dr, dc in ((1, 0), (-1, 0), (0, 1), (0, -1)):
rr, cc = r + dr, c + dc
while 0 <= rr < 8 and 0 <= cc < 8 and board[rr][cc] == ".":
rr, cc = rr + dr, cc + dc
if 0 <= rr < 8 and 0 <= cc < 8 and board[rr][cc] == king:
return True
return False
white_checks, black_checks = 0, 0
for board in boards:
if checks(board, "W", "k"):
white_checks = white_checks + 1
if checks(board, "w", "K"):
black_checks = black_checks + 1
print("1.3", white_checks, black_checks)Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.
Wszystkie lekcje kursu Matura z informatyki: arkusze krok po kroku·Zaloguj się, aby zapisać postęp na koncie.