ВСЕ типы ТЕОРИИ ИГР на Python | Самые ЛЕГКИЕ 3 БАЛЛА на ЕГЭ по ИНФОРМАТИКЕ 2023 | Задания 19 - 21

preview_player
Показать описание
Если ты читаешь это, то тебе крупно повезло, ведь ты можешь прямо сейчас начать мощную подготовку к ЕГЭ с 15% скидкой!!! Получи заветную сотку на ЕГЭ без проблем и стресса вместе с 99 баллов. Пиши кодовое слово "ФИНИШ", чтобы узнать подробнее или записаться:

Меня зовут Даня Казаков и я преподаватель информатики в онлайн школе 99 баллов.
- Сдал новый компьютерный ЕГЭ на 100 баллов.
- Преподаю уже 5-ый год
- Выпустил более 4500 учеников
- Средний балл выпускников мастер группы - 85.1

Полезные ссылки:

Подписывайся на канал, пиши комментарии, ставь лайк и прожимай колокольчик, чтобы не пропустить новые занятия!

Музыка на фоне: Lofi Girl
#99баллов #99баллов_информатика #даняказаков #егэ
Рекомендации по теме
Комментарии
Автор

мужик, спасибо тебе большое, у меня завтра пересдача, я посмотрел у тебя всего 2 видео с заданием 8 и теорией игр, но я тебе безумно благодарен, никто не может так кратко и быстро объяснить задание как ты.+rep

ktoshoot
Автор

вы прекрасны, я счастлив, что теперь понимаю теорию игр, и всё благодаря вам!!!! Спасибо

pewqbic
Автор

Спасибо большое! Очень рад тому, что нашёл гибкий способ для ТИ. Целую недели искал и не мог найти))

AOT_Replays
Автор

большое спасибо, смотрела много разборов, и только сейчас поняла

_sanmo_
Автор

А что делать, если игрок не может повторять свой собственный последний ход? Из РЕШУ ЕГЭ под номерами 46977, 46978, 46979

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один камень, добавить два камня или увеличить количество камней в куче в два раза. При этом нельзя повторять ход, который этот же игрок делал на предыдущем ходу. Повторять чужие ходы и свои более старые ходы разрешается.

Например, если в начале игры в куче 3 камня, Петя может первым ходом получить кучу из 4, 5 или 6 камней. Если Петя получил кучу из 5 камней (добавил два камня), то следующим ходом Ваня может получить 6, 7 или 10 камней. Если Ваня добавил один камень и получил 6 камней, то вторым ходом Петя может получить 7 или 12 камней. Получить 8 камней Петя не может, так как для этого нужно добавить 2 камня, а Петя делал это на предыдущем ходу.

Чтобы делать ходы, у каждого игрока есть неограниченное количество камней.

Игра завершается, когда количество камней в куче становится не менее 21. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 21 или больше камней. В начальный момент в куче было S камней, 1 ⩽ S ⩽ 20.

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.

19. Укажите наименьшее значение S, при котором Петя не может выиграть за один ход, но у Пети есть выигрышная стратегия, позволяющая ему выиграть вторым ходом.

20. Укажите два значения S, при которых у Вани есть выигрышная стратегия, позволяющая ему выиграть вторым ходом при любой игре Пети, но у Вани нет стратегии, которая позволяла бы ему гарантированно выиграть первым ходом.

В ответе запишите найденные значения в порядке возрастания: сначала меньшее, затем большее.

21. Найдите наибольшее значение S, при котором у Пети есть выигрышная стратегия, позволяющая ему выиграть третьим ходом при любой игре Вани, но у Пети нет стратегии, которая позволяла бы ему гарантированно выиграть первым или вторым ходом.

В общем, я изменил move(h) следующим образом:
def move(h):
a = []
x, my_last, his_last = h
if my_last != '+1': a.append((x + 1, '+1', my_last))
if my_last != '+2': a.append((x + 2, '+2', my_last))
if my_last != '*2': a.append((x * 2, '*2', my_last))
return a
но ответы с таким вариантом программы не совпадают, и кажется, что я просто забываю использовать his_last.

UPD:
Я попробовал написать две разные функции move(h) для Пети и Вани по образцу из видео, и это приводит меня к тем же самым неправильным ответам.

UPD 2:
Вот правильная функция:
def move(h):
x, his_last, my_last = h
a = []
if my_last != '+1':
a.append((x + 1, '+1', his_last))
if my_last != '+2':
a.append((x + 2, '+2', his_last))
if my_last != '*2':
a.append((x * 2, '*2', his_last))
return a

barabarabaraberebereberee
Автор

Подскажите пожалуйста как решить эту задачу способом из видео но так чтобы она не выходила за предел рекурсии Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один камень или возвести количество камней в квадрат. Например, имея кучу из 7 камней, за один ход можно получить кучу из 8 или 49 камней. У каждого игрока, чтобы делать ходы, есть неограниченное количество камней.

Игра завершается в тот момент, когда количество камней в куче становится 100 или более. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 100 или больше камней.

В начальный момент в куче было S камней, 1 < S < 99.

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

Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, когда такая ситуация возможна.

redtroll
Автор

Почаще делай видео, быстрее и познавательнее смотреть, чем вебинары

zlayatucha
Автор

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч один камень или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень меньше, чем убирается).
Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 20. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 20 или меньше камней.
В начальный момент в первой куче было 10 камней, во второй куче  — S камней, S > 10.
Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите максимальное значение S, когда такая ситуация возможна.

favn
Автор

13.35 что нужно прописать, чтобы не учитывать ходы которые ведут в значение больше 60?

IDAHOBI
Автор

Привет, просто интересно)) Сколько в месяц зарабатываешь на репетиторстве? Больше 150к?

keitkeit
Автор

Помогите, прошу!!!
Я просто не понимаю, моя программа в точности, как на видео, но она выводит только сообщение об ошибке максимума рекурсии.
Условия: 1<=s<=90; ходы: +1, *2; кучи: 5, s; прийти к сумме куч в 455 камней.
Побеждает Ваня первым ходом после неудачного хода Пети.
Вот сама программа:

from functools import lru_cache
@lru_cache(None)
def moves(h):
a, b=h
return (a+1, b), (a*2, b), (a, b+1), (a, b*2)
def game(h):
a, b=h
if a+b>=455: return 'w'
if any(game(m) == 'w' for m in moves(h)): return 'p1'
if any(game(m) == 'p1' for m in moves(h)): return 'b1'
if any(game(m) == 'b1' for m in moves(h)): return 'p2'
if all(game(m) == 'p1' or game(m) == 'p2' for m in moves(h)): return 'b2'
for s in range(1, 91):
h=5, s
if game(h)=='b1':
print(s)

zimuvnb
Автор

В заданиях с двумя кучами пишет что a не определено. и ошибку выдает в строке a, b=h. Что делать??

homegame
Автор

Спасибо! Готовился к ЕГЭ по информатике в 10 классе по курсу Flash из 100бальногорепетитора, а летом доступ к нему блокируется... Ты очень помог мне вспомнить :) В школьное время было лень разбираться в рекурсиях и я упустил суть решения Python. Вот, сижу летом готовлюсь...

Vanek_fff
Автор

Большое спасибо за разбор, стало намного проще и в целом понятней, как решать такие задачи, но вот у меня попалась такая вариация задачи, когда не "нельзя повторять ход, который сделал второй игрок", а "нельзя повторять ход, который этот же игрок делал на предыдущем ходу". Всё пытался догадаться, как изменить код в таком случае, но так и не додумался. Сможете, пожалуйста, помочь?

jsu
Автор

Можете помочь, у меня достигается максимум рекурсии, хотя кэширование я сделал. Что делать в таком случае?

Q___m
Автор

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит одна куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может
а) убрать из кучи половину камней, если количество камней в куче делится на 2; иначе убрать из кучи два камня;
б) убрать из кучи две трети камней, если количество камней в куче делится на 3; иначе убрать из кучи три камня.
Например, пусть в куче 10 камней, тогда можно убрать половину или только три камня. А если в куче 12 камней, то можно убрать половину или две трети камней. Игра завершается в тот момент, когда в куче останется ровно 1 камень. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, в которой будет ровно 1 камень. В начальный момент в куче было S камней, 1 ≤ S ≤ 37.

-fagi-
Автор

Почему в задаче на две кучи 19 номер не считает? (не выдает никакой ответ,

xsihexq
Автор

лучшииий, очень круто объяснил, еще и через прогу!!

ennhao
Автор

Просто мощь. Отлично снято, качество, звук, атмосфера, подача - подход к своей работе на высоте! Целеустремленность твоё второе имя. Дальше лучше.

morrisnight
Автор

а что делать коогда в условии на две кучи камней в обоих неизвестное значение?

mr.mahlov