38 / 39 / 7
Регистрация: 13.11.2020
Сообщений: 678

Крестики-нолики

13.01.2021, 19:06. Показов 16733. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Напишите функцию 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
- - -

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


Python
1
2
3
4
5
6
7
8
9
10
11
def tic_tac_toe(field):
    flag = 'False'
    for i in field:
        if ''.join(i) == 'xxx': 
            print('x win')
            flag = 'True'
        elif ''.join(i) == '000': 
            print('0 win')
            flag = 'True'
    if flag == 'False': 
        print('draw')
выше тест который - проходит, а второй уже нет
Ввод
data = """0 - x
- 0 -
x x 0"""

field = [line.split() for line in data.split('\n')]
tic_tac_toe(field)
Ожидаемый результат
0 win
Вывод
draw
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.01.2021, 19:06
Ответы с готовыми решениями:

Крестики-нолики
Напишите класс TicTacToeBoard для игры в крестики-нолики, который должен иметь следующие методы: new_game() – для создания новой игры;...

Крестики-нолики
Мне надо сделать игру крестики-нолики, как бы... игра простая, в интернете бесконечное количество вариантов, но есть один нюанс: поле...

Крестики-нолики
Напишите функцию Tic_tac_toe(field), которая принимает на вход список списков 3х3 - поле игры в крестики-нолики. Незанятой (пустой) клетке...

26
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
13.01.2021, 19:15
Цитата Сообщение от Ychenyi Посмотреть сообщение
flag = 'False'
а чем родной булиновский False не устроил?

где логика для диагоналей (подсказка -их всего 2)?
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
13.01.2021, 19:39
Лучший ответ Сообщение было отмечено Ychenyi как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
In [1]: def tic_tac_toe(field):
    ...:     lines = *map("".join, field), *map("".join, zip(*field)), *map("".join, zip(*((row[index], row[-index - 1],) for index, row in enumerate(field))))
    ...:     winner = "x win" if "xxx" in lines else "0 win" if "000" in lines else "draw"
    ...:     print(winner)
    ...:
 
In [2]: data = """0 - 0
    ...: x x x
    ...: 0 0 -"""
    ...:
    ...: field = [line.split() for line in data.split('\n')]
    ...: tic_tac_toe(field)
x win
 
In [3]: data = """0 - x
    ...: - 0 -
    ...: x x 0"""
    ...:
    ...: field = [line.split() for line in data.split('\n')]
    ...: tic_tac_toe(field)
0 win
1
38 / 39 / 7
Регистрация: 13.11.2020
Сообщений: 678
13.01.2021, 19:47  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
а чем родной булиновский False не устроил?
привык уже так, обучают к тому же именно так
Цитата Сообщение от Welemir1 Посмотреть сообщение
где логика для диагоналей (подсказка -их всего 2)?
как видите нету
думаю по диагоналям не нужно
просто было задание тоже крестики нолики и там вроде диагонали не нужно было

Добавлено через 3 минуты
Arsegg, пишет что строка lines слишком длинная
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
13.01.2021, 19:47
Цитата Сообщение от Ychenyi Посмотреть сообщение
обучают к тому же именно так
беги оттуда

Цитата Сообщение от Ychenyi Посмотреть сообщение
думаю по диагоналям не нужно
как не нужно если второй тест именно диагональ?
0
38 / 39 / 7
Регистрация: 13.11.2020
Сообщений: 678
13.01.2021, 19:50  [ТС]
Welemir1, точно, даже ведь и не заметил

Добавлено через 14 секунд
Цитата Сообщение от Welemir1 Посмотреть сообщение
беги оттуда
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
13.01.2021, 19:54
Цитата Сообщение от Ychenyi Посмотреть сообщение
пишет что строка lines слишком длинная
Укороти
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
13.01.2021, 19:55
Ychenyi, я бы на твоем месте не смеялся... есть скрин или ссылка, где учат использовать строковые флаги? а то чет это дно даже для Яндекс.Шараги, не верю...
1
38 / 39 / 7
Регистрация: 13.11.2020
Сообщений: 678
13.01.2021, 19:57  [ТС]
Welemir1, так на уроке говорят так именно писать
отдельных уроков по флагам тут нет
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
13.01.2021, 19:58
Ychenyi, ты значит неверно понял, там про булины рассказывали, а ты проспал, как и диагональ в задаче
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
13.01.2021, 19:58
Цитата Сообщение от Ychenyi Посмотреть сообщение
так на уроке говорят так именно писать
Быть такого не может. Пруфы в студию! Или в ЛС.
0
38 / 39 / 7
Регистрация: 13.11.2020
Сообщений: 678
13.01.2021, 20:02  [ТС]
Welemir1, Arsegg, нет, там учитель объяснял именно так писать
Цитата Сообщение от Arsegg Посмотреть сообщение
Быть такого не может. Пруфы в студию! Или в ЛС.
может, а какие пруфы то? я уроки же не записываю на камеру
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
13.01.2021, 20:05
Ychenyi, учитель то прям спец, а не выпусник той же шараги прошлого года? тоже бы пруфов посмотрел, или не было
0
38 / 39 / 7
Регистрация: 13.11.2020
Сообщений: 678
13.01.2021, 20:07  [ТС]
Welemir1, учитель, который преподает просто работает в школе учителем информатики

Добавлено через 19 секунд
Цитата Сообщение от Welemir1 Посмотреть сообщение
шараги прошлого года?

Не по теме:

ахахахаха нее

0
13.01.2021, 20:07

Не по теме:

Цитата Сообщение от Ychenyi Посмотреть сообщение
я уроки же не записываю на камеру
Юзай OBS, поржем хоть :D

0
38 / 39 / 7
Регистрация: 13.11.2020
Сообщений: 678
13.01.2021, 20:20  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
тоже бы пруфов посмотрел, или не было
в след. раз обязательно запишу на видео для Welemir1, Arsegg,

Добавлено через 10 минут
Arsegg,
Цитата Сообщение от Arsegg Посмотреть сообщение
Укороти
пытаюсь слешами перенести , но ничерта не работает

Добавлено через 2 минуты
щас еще попытаюсь, пока что не помогайте
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
13.01.2021, 20:21
Цитата Сообщение от Ychenyi Посмотреть сообщение
пытаюсь слешами перенести , но ничерта не работает
Положи в скобки и раздели на несколько строк до запятой. Кортеж же.
1
38 / 39 / 7
Регистрация: 13.11.2020
Сообщений: 678
13.01.2021, 20:33  [ТС]
Python
1
2
3
4
lines = *map("".join, field), \
        *map("".join, zip(*field)), \
        *map("".join, zip(*((row[index], row[-index - 1],)
            for index, row in enumerate(field))))
пытаюсь так
но единственная ошибка
./solution.py:5:13: E128 continuation line under-indented for visual indent
это в строке с циклом for

Добавлено через 1 минуту
Цитата Сообщение от Arsegg Посмотреть сообщение
Положи в скобки и раздели на несколько строк до запятой
тоже не работает

Добавлено через 5 минут
все сделал
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
13.01.2021, 20:36
Цитата Сообщение от Ychenyi Посмотреть сообщение
тоже не работает
Python
1
2
3
4
In [1]: lines = (*map("".join, field),
    ...:         *map("".join, zip(*field)),
    ...:         *map("".join, zip(*((row[index], row[-index - 1],) for index, row in enumerate(field)))),
    ...:         )
...
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
13.01.2021, 20:48
Цитата Сообщение от Arsegg Посмотреть сообщение
Или в ЛС.
.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.01.2021, 20:48
Помогаю со студенческими работами здесь

Крестики - нолики
Есть готовый код, дали задание разобрать логику кода, шаг за шагом... что-то у меня всё запуталось в голове, может кто-то поможет...

Нолики-крестики
Напишите программу, которая определяет, кто выиграл в крестики-нолики на увеличенном квадратном поле, выстроив подряд по горизонтали или по...

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

Крестики-нолики
Два игрока играют в крестики-нолики. Напишите программу, которая после каждого хода игрока проверяет поле и, если игра завершилась, выводит...

Крестики-нолики
Пишу крестики нолики, этот кусок кода отвечает за считывание матрицы и проверку на победителя, вот в чем заключается проблема: Не понимаю...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru