Telegram Web
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Каким способом хотите, чтобы я разобрал решения этих задач?

🔥 - вручную
❤️ - на Python
Начнём с базированной базы 🚀

Допустим, есть какая-то позиция (A;B) и сейчас ходит наш соперник. У него 4 варианта хода.

Предположим, что 2 его хода приводят к тому, что мы побеждаем, а 2 - к тому, что мы проигрываем ☹️

Устроит ли нас такая ситуация?
Нет, т.к. выигрышная стратегия - победа при любых ходах соперника. Мы не можем надеяться на то, что соперник не заметит крутой для него ход 😫

Вывод: если хотя бы один ход соперника приводит к нашему поражению, то позиция (A;B) приводит к нашему поражению 😢

Если переводить на язык логики, то пусть наша победа - True, наше поражение False.
Хотя бы один False приводит к нашему False. Так работает логическая операция and 🧐

Это нам пригодится в дальнейшем в коде 🧑‍💻
Перевернём игру наоборот 🙃

Допустим, сейчас позиция (A;B), но ход наш. И всё также, в двух ходах мы проигрываем, в двух выигрываем

Тогда нас эта ситуация устроит, ведь мы всегда можем выбрать, как именно мы сходим.

На языке логики хотя бы один True приводит к общему True. Это операция or 🗣

Можно использовать пример из шахмат: если у нас есть хотя бы один способ поставить мат, то мы выиграем
Если у противника есть хотя бы один способ уклониться от мата, то мы не выиграем 🐺🐺🐺
Составим вот такую таблицу, которая поможет нам писать код.

Позиция 0 - стартовая. Каждая следующая - позиция после чьего-то хода

В позициях мы напишем, что произойдёт, если сейчас достигнуто условие победы и если нет

В позиции 0 победа невозможна, это стартовая позиция

Если достигнута победа в позиции 1, то выиграл Паша, для нас это False, т.к. должен выиграть Влад. Если победа не достигнута, то игра продолжается. Обозначим это стрелочкой

Если достигнута победа в позиции 2, то выиграл Влад. Нас это вполне устраивает - True. Если победа не достигнута, то по идее игра должна продолжаться, но по условию №19 Паша должен выиграть именно в первый ход, поэтому False.

Под ходами мы пишем and, если ходит соперник и or, если ходим мы

Исключение: в задании №19 сказано, что соперник нам поддаётся, т.к. использует свой неудачный ход. В этом случае он играет через or
Логика игры:

В основной программе мы перебираем все возможные S из условия и запускаем все варианты стартовых позиций. Если из этой позиции можно выиграть в 19-ом задании, выводим S

Функция f возвращает True, если данная позиция приведёт к победе Влада в 1 ход, иначе False. Каждая позиция соответствует ячейке из вчерашней таблицы
def f(pos, a, b):
if pos == 0:
#Первый ход Паши через or
elif pos == 1:
#Если Паша win, то False
#Иначе первый ход Влада через or
elif pos == 2:
#Если Влад win, то True
#Иначе False


for S in range(1, 70):
if f(0, 7, S):
print(S)
Как сделать ходы? Номер позиции всегда увеличивается на 1, а также пара (a, b) меняется 4-мя разными способами, которые мы объединяем логической связкой из вчерашней таблицы

return f(pos + 1, a+1, b) or f(pos + 1, a*2, b) or\
f(pos + 1, a, b+1) or f(pos + 1, a*2, b*2)


В итоге получаем вот такой код для задания №19:

def f(pos, a, b):
if pos == 0:
return f(pos + 1, a+1, b) or f(pos + 1, a*2, b) or\
f(pos + 1, a, b+1) or f(pos + 1, a*2, b*2)
elif pos == 1:
if a+b >= 77:
return False
return f(pos + 1, a+1, b) or f(pos + 1, a*2, b) or\
f(pos + 1, a, b+1) or f(pos + 1, a*2, b*2)
elif pos == 2:
if a+b >= 77:
return True
else:
return False


for S in range(1, 70):
if f(0, 7, S):
print(S)


Ответ: 18
Составим аналогичную таблицу для №20
Код для №20
def f(pos, a, b):
if pos == 0:
return f(pos + 1, a+1, b) or f(pos + 1, a*2, b) or\
f(pos + 1, a, b+1) or f(pos + 1, a*2, b*2)
elif pos == 1:
if a+b >= 77:
return False
return f(pos + 1, a+1, b) and f(pos + 1, a*2, b) and\
f(pos + 1, a, b+1) and f(pos + 1, a*2, b*2)
elif pos == 2:
if a+b >= 77:
return False
return f(pos + 1, a+1, b) or f(pos + 1, a*2, b) or\
f(pos + 1, a, b+1) or f(pos + 1, a*2, b*2)
elif pos == 3:
if a+b >= 77:
return True
else:
return False


for S in range(1, 70):
if f(0, 7, S):
print(S)
Код и таблица для №21
def f(pos, a, b):
if pos == 0:
return f(pos + 1, a+1, b) and f(pos + 1, a*2, b) and\
f(pos + 1, a, b+1) and f(pos + 1, a*2, b*2)
elif pos == 1:
if a+b >= 77:
return False
return f(pos + 1, a+1, b) or f(pos + 1, a*2, b) or\
f(pos + 1, a, b+1) or f(pos + 1, a*2, b*2)
elif pos == 2:
if a+b >= 77:
return True
return f(pos + 1, a+1, b) and f(pos + 1, a*2, b) and\
f(pos + 1, a, b+1) and f(pos + 1, a*2, b*2)
elif pos == 3:
if a+b >= 77:
return False
return f(pos + 1, a+1, b) or f(pos + 1, a*2, b) or\
f(pos + 1, a, b+1) or f(pos + 1, a*2, b*2)
elif pos == 4:
if a+b >= 77:
return True
else:
return False


for S in range(1, 70):
if f(0, 7, S):
print(S)
БЕСПЛАТНАЯ ЛЕТНЯЯ ШКОЛА🚀

НАЧНИ ГОТОВИТЬСЯ БЕСПЛАТНО ЛЕТОМ 🔥

📅 Когда: 4 июля - 22 августа

Как попасть? - очень просто, нужно всего лишь зарегистрироваться по ссылке в конце сообщения 👇

Что это такое? Летняя школа - это БЕСПЛАТНЫЙ лайтовый курс, на котором мы будем собираться 1 раз в неделю по 1 часу и вникать в инфу

На бесплатной летней школе мы разберём самые простые номера ЕГЭ по информатике, которые позволят набрать проходной балл + начнем изучать python


Все вебы будут начинаться в 14:00 мск

У тебя будет:
🎁 5 онлайн-вебинаров
🎁 Тестовая домашка после каждого веба без дедлайна (делай, когда тебе удобно).
🎁 Скрипты, конспекты, множество полезных материалов.
🎁 Удобный личный кабинет: расписание вебов, домашки, твой прогресс и многое другое.

🔥 Уютная атмосфера, в которой тебе рады!
🔥 Отдельная беседа в ТГ с сокурсниками и преподавателями.

👉ВСЕ БЕСПЛАТНО🙌🏼 Записывайся тут
Ребята, всем удачи завтра на экзамене, кто сдает 10 числа, вы справитесь ♥️
Как экзамен ? Делитесь впечатлениями в комментах, были ли новые номера или все дефолт
Ребята, всем удачи завтра на второй волне ♥️
Ну, теперь когда все выдохнули и успокоились, скажите, как был экзамен по итогу ?
Ребята, а сколько у нас тут тех, кто будет сдавать ЕГЭ в следующем году ?
Когда будешь сдавать ЕГЭ по инфе ?
Anonymous Poll
54%
в этом году
46%
буду в следующем
Специально для тех, кто только начинает свой путь в подготовке к ЕГЭ, ловите подборку каналов ТУРБО, которые помогут в подгтовке
2025/06/13 20:31:18
Back to Top
HTML Embed Code: