Привет! Давай напишем программу, которая проверит, лежат ли три выбранных квадрата на одном вертикальном ряду в игре "крестики-нолики".
Сначала нам нужно понять, как номера квадратов соотносятся с их положением на поле. Поле 3x3:
Нас интересуют вертикали. Это значит, что номера квадратов должны отличаться только номером ряда, а номер столбца должен быть одинаковым. Давайте посмотрим, какие номера находятся в одном столбце:
Программа должна получить три номера (N1, N2, N3), убедиться, что они идут по возрастанию (N1 < N2 < N3), и затем проверить, принадлежат ли они одному из этих трех наборов.
def check_vertical(n1, n2, n3):
"""
Проверяет, лежат ли квадраты с номерами n1, n2, n3 на одной вертикали.
Предполагается, что n1 < n2 < n3.
"""
# Определяем, какие номера находятся в каждом столбце
col1 = {1, 4, 7}
col2 = {2, 5, 8}
col3 = {3, 6, 9}
# Собираем все номера в одно множество для удобства проверки
numbers = {n1, n2, n3}
# Проверяем, принадлежит ли всё множество одному из столбцов
if numbers.issubset(col1) or numbers.issubset(col2) or numbers.issubset(col3):
return True
else:
return False
# Пример использования:
# Ввод данных (предполагаем, что пользователь ввел их в правильном порядке)
# Тест 1: Вертикаль
n1, n2, n3 = 1, 4, 7
if n1 < n2 < n3:
if check_vertical(n1, n2, n3):
print(f"Квадраты {n1}, {n2}, {n3} лежат на одной вертикали.")
else:
print(f"Квадраты {n1}, {n2}, {n3} НЕ лежат на одной вертикали.")
else:
print("Номера введены некорректно (должны быть по возрастанию).")
# Тест 2: Не вертикаль
n1, n2, n3 = 1, 5, 9
if n1 < n2 < n3:
if check_vertical(n1, n2, n3):
print(f"Квадраты {n1}, {n2}, {n3} лежат на одной вертикали.")
else:
print(f"Квадраты {n1}, {n2}, {n3} НЕ лежат на одной вертикали.")
else:
print("Номера введены некорректно (должны быть по возрастанию).")
# Тест 3: Неправильный порядок
n1, n2, n3 = 7, 1, 4
if n1 < n2 < n3:
if check_vertical(n1, n2, n3):
print(f"Квадраты {n1}, {n2}, {n3} лежат на одной вертикали.")
else:
print(f"Квадраты {n1}, {n2}, {n3} НЕ лежат на одной вертикали.")
else:
print("Номера введены некорректно (должны быть по возрастанию).")
set): col1, col2, col3, которые содержат номера квадратов, находящихся в каждом из трех столбцов.check_vertical принимает три номера (n1, n2, n3).numbers.numbers подмножеством col1, ИЛИ col2, ИЛИ col3. Метод issubset() идеально подходит для этого.True, иначе — False.n1 < n2 < n3), а затем вызываем нашу функцию.Ответ: Программа проверяет принадлежность всех трех номеров к одному из предопределенных множеств, соответствующих вертикальным столбцам поля.