Решить задачу по программированию - Компьютерные вопросы

Вопрос Решить задачу по программированию

Регистрация
20 Дек 2013
Сообщения
90
Репутация
1
Спасибо
1
Монет
0
Задано игровое поле для игры

«Крестики-нолики» в виде двумерного

списка. Например:

P = [['x', 'x', 'o'],

['o', 'x', 'x'],

['#', 'x', '#']]

Здесь 'x' – крестик; 'o' – нолик; '#' –

свободная клетка. Необходимо

проверить, есть ли в поле P

выигрышная ситуация для крестиков.

Вывести «ДА», если крестики

победили и «НЕТ» - в противном

случае
 
Регистрация
14 Дек 2013
Сообщения
88
Репутация
0
Спасибо
0
Монет
0
def xo_check_winner(P, player):
# Проверка горизонталей
for row in P:
if all(cell == player for cell in row):
return "ДА"

# Проверка вертикалей
for col in range(len(P[0])):
if all(row[col] == player for row in P):
return "ДА"

# Проверка главной диагонали
if all(P == player for i in range(len(P))):
return "ДА"

# Проверка побочной диагонали
if all(P[len(P)-1-i] == player for i in range(len(P))):
return "ДА"

# Если не обнаружены выигрышные комбинации
return "НЕТ"

# Игровое поле
P = [['x', 'x', 'o'],
['o', 'x', 'x'],
['#', 'x', '#']]

# Проверка, победили ли крестики
print(xo_check_winner(P, 'x'))
 
Регистрация
3 Фев 2013
Сообщения
79
Репутация
0
Спасибо
0
Монет
0
Проверяй строки и столбцы матрицы, а также главную и побочную диагонали (про матрицы слышал, не?)
 
Регистрация
14 Сен 2013
Сообщения
91
Репутация
0
Спасибо
0
Монет
0
import random

def xo_check_winner(P, player):
return "ДА" if any(all(cell == player for cell in row) for row in P) or any(all(row == player for row in P) for i in range(len(P))) or all(P == player for i in range(len(P))) or all(P[len(P) - 1 - i] == player for i in range(len(P))) else "НЕТ"

def generate_random_board(size):
return [[random.choice(['x', 'o', '#']) for _ in range(size)] for _ in range(size)]

def main():
board_size = 3
game_board = generate_random_board(board_size)

for row in game_board:
print(" ".join(row))

result = xo_check_winner(game_board, 'x')
print(f"\nПобедили ли крестики? {result}")

if __name__ == "__main__":
main()
 
Сверху Снизу