Каким способом хотите, чтобы я разобрал решения этих задач?
🔥 - вручную
❤️ - на Python
🔥 - вручную
❤️ - на Python
Начнём с базированной базы 🚀
Допустим, есть какая-то позиция (A;B) и сейчас ходит наш соперник. У него 4 варианта хода.
Предположим, что 2 его хода приводят к тому, что мы побеждаем, а 2 - к тому, что мы проигрываем ☹️
Устроит ли нас такая ситуация?
Нет, т.к. выигрышная стратегия - победа при любых ходах соперника. Мы не можем надеяться на то, что соперник не заметит крутой для него ход 😫
Вывод: если хотя бы один ход соперника приводит к нашему поражению, то позиция (A;B) приводит к нашему поражению 😢
Если переводить на язык логики, то пусть наша победа - True, наше поражение False.
Хотя бы один False приводит к нашему False. Так работает логическая операция and 🧐
Это нам пригодится в дальнейшем в коде 🧑💻
Допустим, есть какая-то позиция (A;B) и сейчас ходит наш соперник. У него 4 варианта хода.
Предположим, что 2 его хода приводят к тому, что мы побеждаем, а 2 - к тому, что мы проигрываем ☹️
Устроит ли нас такая ситуация?
Нет, т.к. выигрышная стратегия - победа при любых ходах соперника. Мы не можем надеяться на то, что соперник не заметит крутой для него ход 😫
Вывод: если хотя бы один ход соперника приводит к нашему поражению, то позиция (A;B) приводит к нашему поражению 😢
Если переводить на язык логики, то пусть наша победа - True, наше поражение False.
Хотя бы один False приводит к нашему False. Так работает логическая операция and 🧐
Это нам пригодится в дальнейшем в коде 🧑💻
Перевернём игру наоборот 🙃
Допустим, сейчас позиция (A;B), но ход наш. И всё также, в двух ходах мы проигрываем, в двух выигрываем
Тогда нас эта ситуация устроит, ведь мы всегда можем выбрать, как именно мы сходим.
На языке логики хотя бы один True приводит к общему True. Это операция or 🗣
Можно использовать пример из шахмат: если у нас есть хотя бы один способ поставить мат, то мы выиграем
Если у противника есть хотя бы один способ уклониться от мата, то мы не выиграем 🐺🐺🐺
Допустим, сейчас позиция (A;B), но ход наш. И всё также, в двух ходах мы проигрываем, в двух выигрываем
Тогда нас эта ситуация устроит, ведь мы всегда можем выбрать, как именно мы сходим.
На языке логики хотя бы один True приводит к общему True. Это операция or 🗣
Можно использовать пример из шахмат: если у нас есть хотя бы один способ поставить мат, то мы выиграем
Если у противника есть хотя бы один способ уклониться от мата, то мы не выиграем 🐺🐺🐺
Составим вот такую таблицу, которая поможет нам писать код.
Позиция 0 - стартовая. Каждая следующая - позиция после чьего-то хода
В позициях мы напишем, что произойдёт, если сейчас достигнуто условие победы и если нет
В позиции 0 победа невозможна, это стартовая позиция
Если достигнута победа в позиции 1, то выиграл Паша, для нас это False, т.к. должен выиграть Влад. Если победа не достигнута, то игра продолжается. Обозначим это стрелочкой
Если достигнута победа в позиции 2, то выиграл Влад. Нас это вполне устраивает - True. Если победа не достигнута, то по идее игра должна продолжаться, но по условию №19 Паша должен выиграть именно в первый ход, поэтому False.
Под ходами мы пишем and, если ходит соперник и or, если ходим мы
Исключение: в задании №19 сказано, что соперник нам поддаётся, т.к. использует свой неудачный ход. В этом случае он играет через or
Позиция 0 - стартовая. Каждая следующая - позиция после чьего-то хода
В позициях мы напишем, что произойдёт, если сейчас достигнуто условие победы и если нет
В позиции 0 победа невозможна, это стартовая позиция
Если достигнута победа в позиции 1, то выиграл Паша, для нас это False, т.к. должен выиграть Влад. Если победа не достигнута, то игра продолжается. Обозначим это стрелочкой
Если достигнута победа в позиции 2, то выиграл Влад. Нас это вполне устраивает - True. Если победа не достигнута, то по идее игра должна продолжаться, но по условию №19 Паша должен выиграть именно в первый ход, поэтому False.
Под ходами мы пишем and, если ходит соперник и or, если ходим мы
Исключение: в задании №19 сказано, что соперник нам поддаётся, т.к. использует свой неудачный ход. В этом случае он играет через or
Логика игры:
В основной программе мы перебираем все возможные S из условия и запускаем все варианты стартовых позиций. Если из этой позиции можно выиграть в 19-ом задании, выводим S
Функция f возвращает True, если данная позиция приведёт к победе Влада в 1 ход, иначе False. Каждая позиция соответствует ячейке из вчерашней таблицы
В основной программе мы перебираем все возможные 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-мя разными способами, которые мы объединяем логической связкой из вчерашней таблицы
В итоге получаем вот такой код для задания №19:
Ответ: 18
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)
Код для №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 онлайн-вебинаров
🎁 Тестовая домашка после каждого веба без дедлайна (делай, когда тебе удобно).
🎁 Скрипты, конспекты, множество полезных материалов.
🎁 Удобный личный кабинет: расписание вебов, домашки, твой прогресс и многое другое.
🔥 Уютная атмосфера, в которой тебе рады!
🔥 Отдельная беседа в ТГ с сокурсниками и преподавателями.
👉ВСЕ БЕСПЛАТНО🙌🏼 Записывайся тут
НАЧНИ ГОТОВИТЬСЯ БЕСПЛАТНО ЛЕТОМ 🔥
📅 Когда: 4 июля - 22 августа
✅ Как попасть? - очень просто, нужно всего лишь зарегистрироваться по ссылке в конце сообщения 👇
Что это такое? Летняя школа - это БЕСПЛАТНЫЙ лайтовый курс, на котором мы будем собираться 1 раз в неделю по 1 часу и вникать в инфу
На бесплатной летней школе мы разберём самые простые номера ЕГЭ по информатике, которые позволят набрать проходной балл + начнем изучать python
⏰ Все вебы будут начинаться в 14:00 мск
У тебя будет:
🎁 5 онлайн-вебинаров
🎁 Тестовая домашка после каждого веба без дедлайна (делай, когда тебе удобно).
🎁 Скрипты, конспекты, множество полезных материалов.
🎁 Удобный личный кабинет: расписание вебов, домашки, твой прогресс и многое другое.
🔥 Уютная атмосфера, в которой тебе рады!
🔥 Отдельная беседа в ТГ с сокурсниками и преподавателями.
👉ВСЕ БЕСПЛАТНО🙌🏼 Записывайся тут
Ребята, всем удачи завтра на экзамене, кто сдает 10 числа, вы справитесь ♥️
Как экзамен ? Делитесь впечатлениями в комментах, были ли новые номера или все дефолт
Ну, теперь когда все выдохнули и успокоились, скажите, как был экзамен по итогу ?
Ребята, а сколько у нас тут тех, кто будет сдавать ЕГЭ в следующем году ?
Специально для тех, кто только начинает свой путь в подготовке к ЕГЭ, ловите подборку каналов ТУРБО, которые помогут в подгтовке