С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 03.12.2021
Сообщений: 25

Напишите функцию, которая принимает на вход список списков 3х3 — поле игры в крестики-нолики

17.03.2022, 23:08. Показов 3530. Ответов 3

Студворк — интернет-сервис помощи студентам
Напишите функцию tic_tac_toe(field), которая принимает на вход список списков 3х3 — поле игры в крестики-нолики.

На этом поле отражен игровой момент: незанятой (пустой) клетке соответствует '-', крестикам и ноликам соответственно 'x' и '0'.

Ваша функция должна попытаться определить, есть ли победитель в данном игровом моменте и вывести фразу x win, если победили «крестики» или 0 win, если победили «нолики».

В случае, когда однозначно определить победителя не представляется возможным необходимо вывести слово draw.

Пример


Ввод
data = """0 - 0
x x x
0 0 -"""

field = [line.split() for line in data.split('\n')]
tic_tac_toe(field)

Вывод

x win

Примечания
Игровая ситуация задается корректно, то есть расположений, для которых существует несколько исходов, например, такого:

0 0 0
x x x
- - -

быть не может.

Программа должна соответствовать стандартам PEP8
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.03.2022, 23:08
Ответы с готовыми решениями:

Напишите функцию square ,которая принимает на вход список целых чисел
Напишите функцию square ,которая принимает на вход список целых чисел и возвращает список с возведенными в квадрат элементами. Используйте...

Напишите функцию бинарного поиска bin_search, которая принимает на вход отсортированный список и элемент
Напишите функцию бинарного поиска bin_search, которая принимает на вход отсортированный список и элемент. Функция должна возвращать индекс...

Напишите функцию, которая создает список случайных элементов. На вход функция принимает кол-во элементов, минимальное и
Напишите функцию, которая создает список случайных элементов. На вход функция принимает кол-во элементов, минимальное и максимальное...

3
 Аватар для avdivo
303 / 213 / 112
Регистрация: 03.12.2016
Сообщений: 409
18.03.2022, 01:40
noobmaster2007,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import sys, os
 
 
def tic_tac_toe(field):
    options = ({0, 10, 20}, {1, 11, 21}, {2, 12, 22}, {0, 1, 2},
               {10, 11, 12}, {20, 21, 22}, {0, 11, 22}, {20, 11, 2})
    zero = set(x * 10 + y for x in range(3) for y in range(3) if field[y][x] == '0')
    cross = set(x * 10 + y for x in range(3) for y in range(3) if field[y][x] == 'x')
    res = 'draw'
    for i in options:
        if len(zero) - len(zero - i) == 3:
            res = '0 win'
            return res
        if len(cross) - len(cross - i) == 3:
            res = 'x win'
            return res
    return res
 
 
input_file = os.path.join(sys.path[0], 'tic_tac_toe.txt')  # Файл ввода
matrix = []
with open(input_file, 'r') as f:
    lines = f.readlines()
    for line in lines:
        matrix.append(list(*line.rstrip().split()))  # Читаем первую матрицу
print(tic_tac_toe(matrix))
Вложения
Тип файла: txt tic_tac_toe.txt (13 байт, 9 просмотров)
1
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
18.03.2022, 02:50
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def tic_tac_toe(field):
    tr_field = list( zip(*field) )
    for symb in ('x', '0'):
        for F in ( field, tr_field ):
            for i in range(3):
                if ''.join( F[i] ) == symb * 3:
                    return print( f'{symb} win' )
        if field[0][0] + field[1][1] + field[2][2] == symb * 3 \
                or field[0][2] + field[1][1] + field[2][0] == symb * 3:
            return print( f'{symb} win' )
    print( 'draw' )
#==============================================================================
data = """- x 0
          - - 0
          - x 0"""
field = [ line.split() for line in data.split('\n') ]
tic_tac_toe( field )
1
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
19.03.2022, 01:54
Еще вариант:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def tic_tac_toe(field):
    tr_field    = list( zip(*field) )
    tr_tr_field = list( zip(*tr_field) )
    for symb in ('x', '0'):
        if tuple(symb)*3 in tr_field + tr_tr_field \
            + [ (field[0][0], field[1][1], field[2][2] ), ( field[0][2], field[1][1], field[2][0] ) ]:
            return print(f'{symb} win')
    print('draw')
# ==============================================================================
data = """x x x
          x - -
          - 0 -"""
field = [line.split() for line in data.split('\n')]
tic_tac_toe(field)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.03.2022, 01:54
Помогаю со студенческими работами здесь

Крестики-нолики на поле 3х3
Разработайте игру «Крестики-нолики» на поле 3×3 с графическим пользовательским интерфейсом на PyQT. Поле должно быть набором кнопок...

Напишите функцию, которая принимает на вход один аргумент
Задача: Напишите функцию, которая принимает на вход один аргумент `num`. Функция возвращает значение типа boolean, true, если число...

Напишите программу, которая принимает на вход список букв в одной строке
напишите программу, которая принимает на вход список букв в одной строке ( через генератор ). сформируйте список из гласных букв.

Массив 3х3 заполнить 0 и 1, это будет результат игры в крестики нолики
1. Массив 3х3 заполнить 0 и 1, это будет результат игры в крестики нолики. Вввести "да" если игра закончилась победой...

Напишите функцию formatted_grades, которая принимает на вход словарь оценки студентов за предмет
В прошлом модуле мы работали с системой оценки ECTS. Напишите функцию formatted_grades, которая принимает на вход словарь оценки студентов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru