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

Поділитися
Вставка
  • Опубліковано 9 лют 2025
  • 🚀 Забирай бесплатные полезные материалы для подготовки к ЕГЭ по информатике из закрепа ТГ: t.me/+Aq9MfySV...
    👉 Готов начать подготовку к ЕГЭ на СОТКУ? Переходи в бот и пиши кодовое "КОД" - vk.cc/cHZ2s4
    И получай скидку 500 рублей по промокоду - EGEINF500
    Разбираем теорию игр для ЕГЭ по информатике. Как решать задание 19-21 в ЕГЭ по информатике на Python
    Привет, меня зовут Даня Казаков и я преподаватель информатики в онлайн школе 99 баллов.
    Сдал новый компьютерный ЕГЭ на 100 баллов.
    Готовлю к ЕГЭ по информатике 5-ый год
    Выпустил более 4500 учеников
    Средний балл выпускников мастер группы - 85.1
    Залетай в ВК, здесь тоже публикую все для твоей подготовки: 99ballo...
    #информатика #егэинформатика #егэ2025 #99баллов #даняказаков

КОМЕНТАРІ • 151

  • @inf99ballov
    @inf99ballov  11 днів тому

    🚀 Забирай бесплатные полезные материалы для подготовки к ЕГЭ по информатике из закрепа ТГ: t.me/+Aq9MfySV0vo2Mjg6
    👉 Готов начать подготовку к ЕГЭ на СОТКУ? Переходи в бот и пиши кодовое "КОД" - vk.cc/cHZ2s4
    И получай скидку 500 рублей по промокоду - EGEINF500

  • @ДенисИванов-г9ы
    @ДенисИванов-г9ы Рік тому +59

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

  • @ktoshoot
    @ktoshoot 7 місяців тому +8

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

    • @Bolek2018
      @Bolek2018 Місяць тому

      сколько баллов написал?

  • @_sanmo_7671
    @_sanmo_7671 Рік тому +16

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

  • @A3OT_Replays
    @A3OT_Replays 9 місяців тому +2

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

  • @TS-56
    @TS-56 4 місяці тому +2

    Спасибо большое! Документ Полякова на 60 страниц никак не сравнится по эффективности с твоим 50-и минутным роликом! Всё чётко и понятно

  • @barabarabaraberebereberee
    @barabarabaraberebereberee Рік тому +18

    А что делать, если игрок не может повторять свой собственный последний ход? Из РЕШУ ЕГЭ под номерами 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

  • @zlayatucha4935
    @zlayatucha4935 2 роки тому +56

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

  • @favn2858
    @favn2858 Рік тому +2

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

  • @rand111qq
    @rand111qq Рік тому +4

    невероятно помогло, большое спасибо!

  • @NikolayUchitel
    @NikolayUchitel 2 роки тому +8

    Лайк. Репост. Спасибо. Очень недурно

  • @nester9152
    @nester9152 Рік тому +13

    Спасибо за 3 балла на егэ ❤

  • @Vnkeee
    @Vnkeee 7 місяців тому

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

  • @sashok42
    @sashok42 3 місяці тому

    Там, кстати, в последней задаче в 21 номере можно было написать:
    If sum(game(m) == «В1» for m in move(h)) == 2: return P2
    Ответ будет правильный
    В отличии от any, который ищет единственный True, sum может посчитать количество True(тк в питоне True приравнивается к единице)

  • @Rostislaviooo
    @Rostislaviooo Рік тому +6

    Как нужно изменить код, если в условии написано, что нельзя повторять прошлый ход этого же игрока. Вот условие:
    Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один камень, добавить два камня или увеличить количество камней в куче в два раза. При этом нельзя повторять ход, который этот же игрок делал на предыдущем ходу. Повторять чужие ходы и свои более старые ходы разрешается.
    Например, если в начале игры в куче 3 камня, Петя может первым ходом получить кучу из 4, 5 или 6 камней. Если Петя получил кучу из 5 камней (добавил два камня), то следующим ходом Ваня может получить 6, 7 или 10 камней. Если Ваня добавил один камень и получил 6 камней, то вторым ходом Петя может получить 7 или 12 камней. Получить 8 камней Петя не может, так как для этого нужно добавить 2 камня, а Петя делал это на предыдущем ходу.
    Чтобы делать ходы, у каждого игрока есть неограниченное количество камней.
    Игра завершается, когда количество камней в куче становится не менее 29. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 29 или больше камней. В начальный момент в куче было S камней, 1 ⩽ S ⩽ 28.
    Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.
    Укажите наименьшее значение S, при котором Петя не может выиграть за один ход, но у Пети есть выигрышная стратегия, позволяющая ему выиграть вторым ходом.

    • @end2395
      @end2395 11 місяців тому

      Как вариант, первое что приходит на ум это завести кортеж ходов, но сделаем его максимальной длины 2, то есть после своего хода будем добавлять туда ход, и убирать нулевой элемент, а проверять будем именно нулевой элемент, то есть предпредыдущий, соответственно наш. Изначальное значение поставим за (0, 0). Изначально начал делать с массивом, но столкнулся с ошибкой хеширования, так и не понял с чем связано, но в итоге перешел на кортеж. Вот пример кода:
      from functools import lru_cache
      def moves(h):
      x, steps = h
      a = []
      if steps[0] != '+1':
      steps = (steps[1], '+1')
      a.append((x + 1, steps))
      if steps[0] != '+2':
      steps = (steps[1], '+2')
      a.append((x + 2, steps))
      if steps[0] != '*2':
      steps = (steps[1], '*2')
      a.append((x * 2, steps))
      return a
      @lru_cache(None)
      def game(h):
      x, steps = h
      if x >= 29: return 'W'
      if any(game(m) == 'W' for m in moves(h)): return 'P1'
      if all(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, 28):
      h = (s, (0, 0))
      if game(h) == 'P2':
      print(s, game(h))
      Такой код выдает:
      7 P2
      11 P2
      12 P2
      13 P2
      То есть минимальный s = 7

    • @xra.0
      @xra.0 11 місяців тому

      @@end2395 Спасибо за идею, помог, но хочу подметить, что вместо "steps" в условии лучше использовать новую переменную, а то последний ход перемешивается и ответ на 46977 получается не правильным (но я решил).

  • @morrisnight
    @morrisnight 10 місяців тому +3

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

  • @АринаАлексеева-ю2г
    @АринаАлексеева-ю2г 2 роки тому +10

    я не понимаю суть функции game, как она работает. Если какой нибудь первый ход окажется выигрышным то выходит P1. А если все ходы выводят P1 то возвращается В1, это не понятно, почему при всех ходах когда петя выигрывает 1ым ходом у вани выигрышный? кажется я запутался, я чтото не так понял

    • @inf99ballov
      @inf99ballov  2 роки тому +11

      Удобнее для понимания нарисовать дерево ходов, а я пока что объясню на словах: Петя по условию ходит всегда первый, значит если у него есть ХОТЯ БЫ ОДИН ход приводящий его к победе - то он и победит. Но такая конструкция не работает для Вани - ведь он ходит после Пети - поэтому чтобы доказать что выигрывает Ваня необходимо рассмотреть ВСЕ ходы Пети и при каждом доказать что Ваня побеждает. Что же касается P1 - это выигрышная стратегия - то есть та из которой можно выиграть и раз Все ходы ведут в такие позиции - значит из всех них будет побеждать мой оппонент - а значит я сам нахожусь в проигрышной

  • @sosun4lena453
    @sosun4lena453 Рік тому +35

    вот есть будет другая задача на ЕГЭ, как перекрутить у себя всю эту логику в голове? это же не реально

    • @DZ-vq8db
      @DZ-vq8db Рік тому +8

      Есть же, если ты не пень же, получиться же. А иначе же нафиг ты такой в унике нужен

    • @dizla1k157
      @dizla1k157 9 місяців тому +1

      Так а что сложного? Код немного меняешь и все либо руками

    • @coolomet
      @coolomet 8 місяців тому

      если попадется новая задача, то, скорее всего, она будет не сложной, но будет усложняться в следующих годах

  • @j1su174
    @j1su174 Рік тому +7

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

  • @leoshastin
    @leoshastin 2 роки тому +12

    Ответить на 21-й вопрос последней задачи можно так:
    for s in range(1, 41):
    if game(s) == 'p2' and ((game(s*2) == 'v1') + (game(s+1) == 'v1') + (game(s+2) == 'v1')) == 2:
    print(s)

    • @inf99ballov
      @inf99ballov  2 роки тому +5

      душевно благодарен, добавлю такое решение в документ)

    • @stanislavchernov4248
      @stanislavchernov4248 Рік тому

      как на 3 кучи делать?

  • @muzekass5829
    @muzekass5829 Рік тому

    Попалось задание на решу егэ с одной кучей и возможные ходы - добавить 1 камень или увеличить в 6 раз их количество.
    Победа получается, когда камней больше 361
    Если для s брать начальное значение меньше 112 то прога ошибку выдает, а если брать значения выше - ответа просто нет
    Номер на решу егэ: 28142
    Условие:
    Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один камень или увеличить количество камней в куче в шесть раз. Например, имея кучу из 10 камней, за один ход можно получить кучу из 11 или 60 камней. У каждого игрока, чтобы делать ходы, есть неограниченное количество камней.
    Игра завершается в тот момент, когда количество камней в куче превышает 361. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 362 или больше камней. В начальный момент в куче было S камней, 1 ≤ S ≤ 360.
    Говорят, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока  - значит, описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника.
    Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, когда такая ситуация возможна.

    • @muzekass5829
      @muzekass5829 Рік тому

      Нашел решение
      Нужно добавить:
      from sys import setrecursionlimit
      setrecursionlimit(2000)

  • @s1sy4s1ck3
    @s1sy4s1ck3 Рік тому +1

    Не понимаю почему не выдает ответ программа
    задача:Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч (по своему выбору) один камень или увеличить количество камней в куче в три раза. Например, пусть в одной куче 5 камней, а в другой 9 камней; такую позицию мы будем обозначать (5, 9). За один ход из позиции (5, 9) можно получить любую из четырёх позиций: (6, 9), (15, 9), (5, 10), (5, 27).
    Игра завершается в тот момент, когда суммарное количество камней в кучах становится не менее 79. Победителем считается игрок, сделавший последний ход, т. е. первым получивший позицию, в которой в кучах будет 79 или больше камней.
    В начальный момент в первой куче было 6 камней, во второй куче  - S камней; 1 ≤ S ≤ 72.
    Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока  - значит, описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника. В описание выигрышной стратегии не следует включать ходы играющего по этой стратегии игрока, не являющиеся для него безусловно выигрышными, т. е. не являющиеся выигрышными независимо от игры противника.
    Найдите максимальное значение S, при котором у Вани есть выигрышная стратегия, позволяющая ему выиграть при любой игре Пети.
    код:
    from functools import lru_cache
    def moves(h):
    a, b = h
    return (a + 1, b), (a * 3, b), (a, b + 1), (a, b * 3)
    @lru_cache(None)
    def game(h):
    a, b = h
    if a+b >= 79: return 'W'
    if any(game(m) == 'W' for m in moves(h)): return 'P1'
    if all(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, 200):
    h = 6, s
    if game(h) == 'B2':
    print(s, game(h))

    • @inf99ballov
      @inf99ballov  Рік тому

      Так а может тебе здесь B1 нужно найти на не B2? Может четко написать номер задания ( 19 20 или 21) и что нужно найти дословно
      Потому что код написан верно

  • @ennhao768
    @ennhao768 10 місяців тому +3

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

  • @O_M_E_G_A_5_2_6
    @O_M_E_G_A_5_2_6 2 місяці тому

    Просто отдуши, я всё понял, ты лучший

  • @yummy7030
    @yummy7030 Рік тому +3

    день до егэ) хыхыхы

  • @keitkeit3764
    @keitkeit3764 Рік тому +4

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

  • @homegame8787
    @homegame8787 Рік тому +3

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

  • @БриллиантовыйДемон

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

  • @valeriya2106
    @valeriya2106 Місяць тому

    Подскажите пожалуйста, почему в начале условие any? Ведь нам нужно выгнать при любом ходе Пети. Разве это не all? 10 раз пересмотрела, все равно не понимаю

  • @rebellion255
    @rebellion255 Рік тому +1

    В чем разница между вашим методом и "традиционным" методом через итерацию?
    def f(s1,s2,p):
    if s1+s2 >= ... and p == ...: return True;
    if s1+s2 = ... : return False;
    if ... : return f(s1*2,s2,p+1) or (and) ...
    ...
    for s2 in range(100):
    if f(...,s2,1):
    print(s2);

    • @GhostKarin
      @GhostKarin Рік тому

      нравится в говне наверн повозиться им)

    • @rebellion255
      @rebellion255 Рік тому

      @@GhostKarin кому именно? тем, у кого код больше?

    • @GhostKarin
      @GhostKarin Рік тому

      @@rebellion255 да, в котором легко запутаться

    • @rebellion255
      @rebellion255 Рік тому

      @@GhostKarin надеюсь, мне скажут, зачем этот длинный код нужен и чем он отличается от стандартного

    • @inf99ballov
      @inf99ballov  Рік тому

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

  • @МишаМаматов-й5о
    @МишаМаматов-й5о 8 місяців тому

    Люблю когда не надо думать, спасибо😘

  • @andycall1115
    @andycall1115 Рік тому +1

    Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч один камень или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из четырёх позиций: (5, 9), (3, 9), (6, 8), (6, 5).
    Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 40. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 40 или меньше камней.
    В начальный момент в первой куче было 20 камней, во второй куче  - S камней, S > 20.
    Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока  - значит, описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника. В описание выигрышной стратегии не следует включать ходы играющего по ней игрока, которые не являются для него безусловно выигрышными, т.е не гарантирующие выигрыш независимо от игры противника.
    Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите максимальное значение S, когда такая ситуация возможна.

    • @inf99ballov
      @inf99ballov  Рік тому +3

      Решил
      чекай гугл документ

    • @МаксимДураксим
      @МаксимДураксим Рік тому

      ​@@inf99ballov Известно, что Петя проиграл своим вторым ходом после неудачного хода Вани. Такое может быть?
      И еще одна формулировка:Известно, что Петя выиграл своим вторым ходом после неудачного хода Вани

    • @sparrrxw
      @sparrrxw Рік тому

      @@inf99ballov по условию s > 20. но в коде в цикле for ты перебираешь от 20 включительно. я проверил: на ответ это не повлияло, но исправь всё же, пожалуйста

  • @redtroll2830
    @redtroll2830 Рік тому

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

  • @glinomeszhidkiy
    @glinomeszhidkiy Рік тому

    спасибо большое!!!

  • @maxlopp
    @maxlopp Рік тому +1

    а что делать если на код с 2 кучами выдает, что "a, b = h TypeError: cannot unpack non-iterable int object"

    • @inf99ballov
      @inf99ballov  Рік тому +1

      ошибка в шаблоне, скорее всего забыла в основном цикле под функцией передавать h как 2 числа, поэтому и распаковать обратно он не может

  • @stafrhd
    @stafrhd 10 місяців тому

    Ну лучший. Прям спас.

  • @k_o_l_d_iplay9360
    @k_o_l_d_iplay9360 Рік тому +3

    Отличное видео, но у меня до сих пор остался вопрос по #6 из 9-10 варианта, проблема заключается в следующем: черепаха поначалу стоит на одном месте, а затем рисует фигуру. Вот условия из 9 варианта (Направо 30 [Вперёд 30 Направо 60 Вперёд 30 Направо 120] и условие из 10 варианта: (Повтори 10 [Направо 120 Вперёд 12 Направо 60 Вперёд 12]
    Код для 10 варианта:
    from turtle import *
    color('black', 'red')
    m = 100
    begin_fill()
    left(90)
    for i in range(4):
    right(120)
    forward(12*m)
    right(60)
    forward(12*m)
    end_fill()
    canvas = getcanvas()
    cnt = 0
    for x in range(-130*m, 130*m, m):
    for y in range(-130*m, 130*m, m):
    item = canvas.find_overlapping(x,y,x,y)
    if len(item) == 1 and item[0] == 5:
    cnt += 1
    print(cnt)
    done()
    ext()
    Код для 9 варианта:
    from turtle import *
    color('black' 'red')
    m = 100
    begin_fill()
    right(30)
    left(60)
    for i in range(4):
    forward(30*m)
    right(60)
    forward(30*m)
    right(120)
    end_fill()
    canvas = getcanvas()
    cnt = 0
    for x in range(-130*m, 130*m, m):
    for y in range(-130*m, 130*m, m):
    item = canvas.find_overlapping(x,y,x,y)
    if len(item) == 1 and item[0] == 5:
    cnt += 1
    print(cnt)
    done()
    ext()

    • @skrapbs8054
      @skrapbs8054 Рік тому +6

      Них у тебя код

    • @NoNo-pp1qz
      @NoNo-pp1qz Рік тому +7

      Ты ещё на ассемблере черепашку пропиши

    • @matikkyt3710
      @matikkyt3710 Рік тому +3

      кумир в помощь

    • @k_o_l_d_iplay9360
      @k_o_l_d_iplay9360 Рік тому

      @@matikkyt3710 👌

  • @егор-з9ь7д
    @егор-з9ь7д 2 роки тому +5

    👍 СЮДАААААА
    {под видео}
    🦆

  • @ДимаАхунов-р3ш
    @ДимаАхунов-р3ш Рік тому +1

    Помогите, прошу!!!
    Я просто не понимаю, моя программа в точности, как на видео, но она выводит только сообщение об ошибке максимума рекурсии.
    Условия: 1

  • @user-iw4xj4mn1t
    @user-iw4xj4mn1t Рік тому +1

    P1 и B1 очень путают понимание рекурсии, надо было по другому обозвать

  • @elenamakarova1153
    @elenamakarova1153 Рік тому +2

    а почему при более больших числах (200+) в стандартных задачах на одну кучу ничего не работает и можно ли это как-то решить ?

    • @mrvalary2
      @mrvalary2 Рік тому

      Начинай перебор с больших чисел. Например у тебя победа с 350, тогда начни с 100

    • @mor9626
      @mor9626 Рік тому +1

      достаточно добавить
      from sys import setrecursionlimit
      setrecursionlimit(2000)

  • @Q_1_2_m
    @Q_1_2_m Рік тому +1

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

  • @xra.0
    @xra.0 11 місяців тому

    Для задания 46977 (одна куча, три хода, запоминание хода(одного и того же игрока)):
    from functools import lru_cache
    def m(s):
    A = []
    x,steps = s
    if steps[0] != '+1':
    q = (steps[1],'+1')
    A.append((x + 1,q))
    if steps[0] != '+2':
    q = (steps[1],'+2')
    A.append((x + 2,q))
    if steps[0] != '*2':
    q = (steps[1],'*2')
    A.append((x * 2,q))
    return A
    @lru_cache(None)
    def g(s):
    x, steps = s
    if x >= 21: return 'w'
    if any(g(x) == 'w' for x in m(s)): return 'p1'
    if all(g(x) == 'p1' for x in m(s)): return 'w1'
    if any(g(x) == 'w1' for x in m(s)): return 'p2'
    if all(g(x) == 'p1' or g(x) == 'p2' for x in m(s)): return 'w2'
    if any(g(x) == 'w1' or g(x) == 'w2' for x in m(s)): return 'p3'
    if all(g(x) == 'p1' or g(x) == 'p2' or g(x) == 'p3' for x in m(s)): return 'w3'
    for s in range(1,21):
    h = (s,(0,0))
    if g(h) == 'p2':
    print(s)
    Не уверен в правильности хода Вани(3), но в целом код рабочий!

  • @АртёмМорозов-б7э

    А можешь, пожалуйста, разобрать задачи по теории игр, когда в условии написано "не следует"

    • @inf99ballov
      @inf99ballov  Рік тому

      Скинь пожалуйста такое условие, что-то я таких не припомню

    • @АртёмМорозов-б7э
      @АртёмМорозов-б7э Рік тому

      @@inf99ballovПросто на курсы по подготовке к ЕГЭ хожу, теорию игр по твоим шаблонам делаю, сегодня даже учителю это шаблон показывал. Также большое тебе спасибо за всё то, что ты делаешь для нас, твои видео очень помогают. Ну а вот такую задачу я не сделал. Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч (по своему выбору) один камень или увеличить количество камней в куче в два раза. Например, пусть в одной куче 10 камней, а в другой 5 камней; такую позицию в игре будем обозначать (10, 5). Тогда за один ход можно получить любую из четырёх позиций: (11, 5), (20, 5), (10, 6), (10, 10). Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней.
      Игра завершается в тот момент, когда суммарное количество камней в кучах становится не менее 77. Победителем считается игрок, сделавший последний ход, т.е. первым получивший такую позицию, при которой в кучах будет 77 или больше камней.
      В начальный момент в первой куче было семь камней, во второй куче - S камней; 1 ≤ S ≤ 69.
      Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока - значит описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника. В описание выигрышной стратегии не следует включать ходы играющего по этой стратегии игрока, не являющиеся для него безусловно выигрышными, т.е. не являющиеся выигрышными независимо от игры противника.
      Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, когда такая ситуация возможна.
      Вот "не следует", как мне кажется, там для неё команду "else" может использовать нужно?

    • @inf99ballov
      @inf99ballov  Рік тому

      @@АртёмМорозов-б7э Так это же самая обычная задача на две кучи камней. Тебя смущает формулировка: Неудачного хода Пети? Я решал такую задачу в видео, погляди внимательнее(3 по счету вроде))) там нужно просто в одном моменте all ан any поменять и все

    • @inf99ballov
      @inf99ballov  Рік тому +1

      @@АртёмМорозов-б7э А вот этот кусок:
      """
      Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока - значит описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника. В описание выигрышной стратегии не следует включать ходы играющего по этой стратегии игрока, не являющиеся для него безусловно выигрышными, т.е. не являющиеся выигрышными независимо от игры противника.
      """
      Вообще рудимент, который остался с егэ 2020 годов, когда выигрышные стратегии расписывали руками - на него вообще забей)

    • @АртёмМорозов-б7э
      @АртёмМорозов-б7э Рік тому +1

      @@inf99ballov понял, спасибо большое, что объяснил)

  • @bo3duxah
    @bo3duxah Рік тому +1

    Разве в первой задаче ответ не 7? Петя выбирает h*2 и получает 14 камней, потом Ваня выбирает h*2 и получает 28 камней >=25, то есть выигрывает. Или я что-то не понимаю?

    • @inf99ballov
      @inf99ballov  Рік тому +1

      В задаче написано при ЛЮБОЙ ИГРЕ ПЕТИ а значит что ваня должен выиграть при обоих его ходах а не только при умножении на два

  • @IDAHOBI
    @IDAHOBI Рік тому

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

  • @popugajara
    @popugajara 10 місяців тому +3

    код абсолютно не работает на некоторых задачах.

    • @ArgentYourBest_Choise
      @ArgentYourBest_Choise 3 місяці тому

      На каких типах не работает например?

  • @divine3728
    @divine3728 Рік тому

    вчера на решу егэ мне попались задачи на теорию игр под номером 28236 по 28238 включительно, где в условиях можно к куче прибавить один камень или возвести в квадрат.
    скажите, пожалуйста, как правильно отразить это условие в коде?

    • @black_inside
      @black_inside Рік тому

      def moves(h):
      return h+1, h**2

    • @divine3728
      @divine3728 Рік тому

      @@black_inside я так и написал, но у меня выдаёт ошибку

    • @mor9626
      @mor9626 Рік тому +3

      @@divine3728 выдаёт ошибку, т.к. ты бесконечно возводишь 1 в квадрат, поэтому начни перебор с 2

  • @pusna5478
    @pusna5478 Рік тому

    при поиске максимального S выдает на единицу меньше ответа. Можете подсказать?

  • @loka8001
    @loka8001 Рік тому +1

    Я немного не понял насчет "if h>60: return 'P1'" разве не B1 должно быть? если именно оппонент выигрывает или P2 а не P1?

    • @loka8001
      @loka8001 Рік тому

      Если кто нибудь понял может пояснить поподробнее?

  • @mr.mahlov4245
    @mr.mahlov4245 Рік тому

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

  • @АревикКарян
    @АревикКарян 11 місяців тому +2

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

  • @Bogdashka
    @Bogdashka Рік тому

    А все прототипы можно ли решить через эксель? Скажите, пожалуйста

    • @inf99ballov
      @inf99ballov  Рік тому +1

      Ну скорее всего можно, но в некоторых случаях очень "неприятно"

  • @whysotired7
    @whysotired7 Рік тому

    а теория игр только на камни существует?

  • @rai_bon8117
    @rai_bon8117 Рік тому

    Так и не понял, что такое P1, P2, B1, B2?

  • @haemi6899
    @haemi6899 Рік тому +1

    какие 3 месяца. осталось 13 часов😋

  • @Stusl1k
    @Stusl1k 10 місяців тому +1

    голос на пятёрку похож)

  • @ffiulopy2.0
    @ffiulopy2.0 2 роки тому +1

    На ЕГЭ могут попасться только камни или ещё что-то?

    • @inf99ballov
      @inf99ballov  2 роки тому +2

      может быть что угодно, но из года в год только камни дают или что-то на них похожее

  • @pslups9086
    @pslups9086 Рік тому +1

    метод алексея кабанова короче и красивей будет

    • @inf99ballov
      @inf99ballov  Рік тому

      Согласен, на мой взгляд, этот просто по-понятнее, ну а вы выбирайте сами)

  • @battleunit4701
    @battleunit4701 Рік тому

    Кто знает как решить ошибку: cannot unpack non-iterable int object. Она возникает только тогда , когда в задаче 2 кучи .

    • @inf99ballov
      @inf99ballov  Рік тому +1

      скинь свою прогу, я скажу где ошибка

    • @battleunit4701
      @battleunit4701 Рік тому +1

      @@inf99ballov спасибо ,но я уже разобрался) В конце , условие нужно было из game(s) сделать game(h)

  • @hiIamalina
    @hiIamalina 8 місяців тому

    А как же фишки?

  • @Frensski
    @Frensski Рік тому

    сколько баллов дает эти 3 задания в сумме??

  • @СергейПичугин-в5б
    @СергейПичугин-в5б 9 місяців тому

    я ору чаечкой с названий файлов

  • @itchyyy1529
    @itchyyy1529 Рік тому

    код перестает работать при большом количестве камней

    • @anus8346
      @anus8346 Рік тому

      import sys
      sys.setrecursionlimit(2500) # увеличивай значение, пока ошибка не пропадет
      это исправит проблему с глубиной рекурсии

  • @Jdjkjh
    @Jdjkjh Рік тому

    😂ты на того типа из волчонка похож

  • @artemvolkov2550
    @artemvolkov2550 10 місяців тому

    имба

  • @capmacaron
    @capmacaron 8 місяців тому

    спасибо за ребенка

  • @varvarapro7839
    @varvarapro7839 2 роки тому +3

    🦆

  • @Reilinsger
    @Reilinsger Рік тому +1

    Теория подставы...

  • @hedamn6416
    @hedamn6416 9 місяців тому +1

    код не рабочий )

    • @kubsupreme1629
      @kubsupreme1629 8 місяців тому

      Всмысле?

    • @kubsupreme1629
      @kubsupreme1629 8 місяців тому

      Почему?

    • @hedamn6416
      @hedamn6416 8 місяців тому +1

      @@kubsupreme1629 потому что как только в задаче действий которые можно сделать становится больше двух, и ты пишешь это в код, программа уже не выдает ответа

    • @seqwai5789
      @seqwai5789 8 місяців тому +1

      @@hedamn6416 У меня такая же проблема возникла, потому что я в цикле писал только конечное число, типа
      for s in range(36):
      А надо от единицы до конечного:
      for s in range(1,36):
      У меня проблема решилась, надеюсь поможет

  • @Олег_Бубенец
    @Олег_Бубенец 8 місяців тому +2

    Не тратьте время, иван викторович объяснил всё проще и за 8 минут, а не за час.

  • @alextarr430
    @alextarr430 Рік тому

    код некорректно работает при других числах

    • @inf99ballov
      @inf99ballov  Рік тому

      Код как раз работает корректно, возможно ты просто ошибся, скинь задачу и свое решение я посмотрю

    • @alextarr430
      @alextarr430 Рік тому

      @@inf99ballov я пробовал его на двух разных задачах и в обоих случаях он выдавал слишком большое число (19 задача), а при слишком маленьком значении (собственно говоря, правильном ответе) в результате было None.
      Из-за чего это может быть?

    • @inf99ballov
      @inf99ballov  Рік тому

      @@alextarr430 Ошибка могла быть где угодно, может быть ты all на any не менял потому что как правило в 19 задачи нужен неудачных ход пети. Но ответить точно смогу только если взгляну на пример

    • @alextarr430
      @alextarr430 Рік тому

      @@inf99ballov мои комментарии с задачей и кодом почему-то удаляются сами по себе после отправления(( Могу я скинуть на почту или еще куда-то?

    • @inf99ballov
      @inf99ballov  Рік тому

      @@alextarr430 по ссылке в описании есть телеграм канал, можешь в комменты просто скинь куда-нибудь под постом

  • @surikatio
    @surikatio Рік тому +1

    У меня задача аналогична первой, но всего лишь отличаются ходы и количество камней в куче, требуемое для выигрыша, код для задачи из видео работает, но для моей выдает макс глубину рекурсии...
    Изменено: проблема в том , что второй ход сначала умножает на 4, а затем вычитает из кучи 3 камня, но я все равно не пойму где рекурсия не может остановиться...

    • @surikatio
      @surikatio Рік тому

      итак, проблему решил тем, что начал перебирать цикл не с 1, а с 2(просто другие решения данной проблемы выдают ошибку)

  • @ИгорьКорюков-э6м

    Программа работает не так, как на видео. Она неправильная

    • @inf99ballov
      @inf99ballov  Рік тому

      как же она тогда выдает правильные ответы?

  • @begidurak
    @begidurak Рік тому

    А как все это запомнить ахаха

    • @inf99ballov
      @inf99ballov  Рік тому +1

      практика и практика))

  • @dima_5145
    @dima_5145 11 місяців тому

    у тебя голос как у пятёрки...

  • @ayezxc
    @ayezxc 9 місяців тому

    ты сигма

  • @VWodolass
    @VWodolass 7 місяців тому

    Лёша это бот!

  • @dyingangell3340
    @dyingangell3340 Рік тому

    бл я один нечего не понимаю?

  • @вадикзаеб
    @вадикзаеб 2 роки тому +6

    огромное спасибо

  • @АревикКарян
    @АревикКарян 11 місяців тому +1

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

  • @АлинаУсмнова
    @АлинаУсмнова Рік тому

    спасибо большое