Задания 19-21 шаблонный способ на 3 балла | ДЕМО, АПРОБАЦИЯ | ЕГЭ 2022

Поделиться
HTML-код
  • Опубликовано: 15 ноя 2024

Комментарии • 179

  • @ДмитрийПаршиковЕГЭИнформатика

    t.me/+w7QoKUXpSh9lZTky - телеграмм канал с полезной информацией и подготовкой к ЕГЭ
    там буду разбирать некоторые задания с ДАЛЬНЕГО ВОСТОКА в дни экзамена
    🔥🔥🔥

  • @Rigel_25
    @Rigel_25 7 месяцев назад +6

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

  • @кабан-ф4ц
    @кабан-ф4ц 6 месяцев назад +24

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

  • @mazer4372
    @mazer4372 2 месяца назад +3

    спасибо большое, залутал свои баллы и поступил, куда хотел благодаря вам

  • @Darkwave_off
    @Darkwave_off 2 года назад +39

    сколько же я пытался понять как решать ТИ... суммарно - почти месяц... а тут понял всё за полчаса и радуюсь жизни. спасибо Вам огромное!

  • @dimadyadkin8002
    @dimadyadkin8002 Год назад +9

    У вас потрясающе получается объяснять материал, спасибо!

  • @polerren590
    @polerren590 5 месяцев назад +1

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

  • @littlefrogg-ee4ve
    @littlefrogg-ee4ve 5 месяцев назад +1

    Завтра егэ по инфе. Ваш видос спасает, спасибо, теперь знаю как решать🥺❤️ долго пыталась понять, думала код наизусть выучить, а благодаря вам ПОНЯЛА

  • @G_TO
    @G_TO 25 дней назад +1

    Здравствуйте! Столкнулся с задачей, где нельзя повторять предыдущий ход. Какие изменения в коде будут тогда для 1/2 куч?

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  22 дня назад +1

      Привет, в функции появится дополнительный аргумент, отвечающий за предыдущий ход, проверяя его, можно будет соответствующим образом формировать список ходов. Например, если в игре было три возможных хода(+1 +4 *2) и Петя сделал второй из них +4, то в аргументе можно передать номер этого действия - 2 и потом уже в список ходов Вани засунуть только +1 и * 2

  • @kartoooshka
    @kartoooshka 21 день назад

    Разобралась не сразу: несколько раз перематывала видео, перечитывала код, попробовала решить задачу на РЕШУ ЕГЭ и в процессе наконец поняла, как это всё работает. Спасибо

  • @ЫбаЫгы
    @ЫбаЫгы Год назад +4

    чел харош, думал, что не сдам ЕГЭ, но теперь буду поступать в МГУ, спасибо за видео!!!!!!!😎😎😎😎😎😎

  • @Macintosh-bk2ur
    @Macintosh-bk2ur 2 года назад +12

    За 10 дней до экзамена))) Спасибо, это намного проще экселя

  • @mezumidumpling
    @mezumidumpling 11 месяцев назад +1

    Следую инструкции на 10:04.
    Задание: найдите минимальное значение S, при котором Ваня выигрывает своим первым ходом при любой игре Пети.
    Вижу, что нужно найти минимальное значение. Значит, у противника будет any. Решаю таким способом, ответ неверный. А если я оставляю у противника all, ответ - верный. Почему так?

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  11 месяцев назад +2

      Ты права, но у тебя в условии есть важное дополнение, найти минимальное значение S, при ЛЮБОЙ игре Пети(на все его ходы), т.е. твой противник умный - значит all
      Если бы в условии просто сказали, найди минимальное значение S, когда можно выиграть, без дополнительных слов (при любом ходе противника, независимо от хода противника, имеем выигрышную стратегию), то any

  • @climberg
    @climberg 5 месяцев назад +1

    немного сложновато, но попробую закрепить на практике! спасибо за такое подробное объяснение, хоть и через 4 дня экзамен, но лучше поздно, чем никогда

  • @yarmukhametov
    @yarmukhametov 2 года назад +4

    Простой и легкий код! Спасибо вам огромное👏🔥🔥

  • @ОльгаТапкова
    @ОльгаТапкова 2 года назад +1

    Это лучшее видео, сколько у других разбирала, но это супер, кратко, талантливо и красиво

  • @kitness82
    @kitness82 2 года назад +1

    Попробовал я порешать этим способом через 1 кучу. Поменял все значения, как нужно. Работает корректно на 1 из пунктов при должном условии задачи. Поэтому данный способ разве что на простейшие задачи при 2 кучах. Шаг влево или вправо - руками/другими способами.

  • @yoru_umi
    @yoru_umi 5 месяцев назад

    спасибо большое за разбор! за день до егэ наконец то поняла как решать

  • @shame364
    @shame364 2 года назад +1

    Жаль, что раньше на наткнулся на это видео. Хотя всë ещë есть время. Спасибо вам большое!

  • @ЧелТЫ-ч7ы
    @ЧелТЫ-ч7ы 2 года назад +8

    Мне нужны ещё баллы все задания обьясни

  • @NastushaAir
    @NastushaAir 11 месяцев назад

    Спасибо большое, очень помогли 🙏💕

  • @thezont7045
    @thezont7045 8 месяцев назад +1

    Можете объяснить почему на 12:36 мы пишем if a>=29 or n>2: ведь по сути первый ход пети(n=0 и к концу n=1), дальше вани(n=1 и к концу n=2). Я не понимаю почему мы пишем n>2, если это по сути начало второго хода Пети.

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  8 месяцев назад +1

      n - номер сделанного только что хода, n > 2 - это грубо говоря, мы позволяем Пете походить второй раз(n = 3) и определяем такой ход как лишний

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  8 месяцев назад +1

      @@thezont7045 да, это список ходов, в этом списке будет набор результатов, с которыми работаем функциями all(), any()

    • @arkonaver
      @arkonaver 12 дней назад

      ​​@@ДмитрийПаршиковЕГЭИнформатика А почему тогда мы все еще считаем четные ходы - Вани, а нечётные - Пети? Ведь 0 - четный - Петя

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  10 дней назад

      @@arkonaver привет, 0 - это вообще отдельное значение, которое означает, что пока сделано - 0 ходов и игра еще не началась, проверяя его, программа понимает, что будет начало игры и следующий ход Пети

  • @gloktar567
    @gloktar567 2 года назад +1

    Даже такой Вупсень ,как я смог полностью освоить прогу за 4 часа суммарного беспрерывного просмотра видео + практики

  • @oksanap5739
    @oksanap5739 2 года назад +3

    Круто, очень доступно

  • @dashafire9576
    @dashafire9576 2 года назад +2

    Потрясающее объяснение, спасибо Вам большое!

    • @ДмитрийПаршиковЕГЭИнформатика
    • @dashafire9576
      @dashafire9576 2 года назад

      ​@@ДмитрийПаршиковЕГЭИнформатика сейчас стала разбирать Ваше решение задания 21 из Демоверсии - программа выдаёт ответ 14, а согласно ответам демоверсии должно получиться 12. Возможно, где-то в коде опечатка? Подскажите, пожалуйста, как исправить программу, чтобы она работала правильно?

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  2 года назад

      @@dashafire9576 в 21 номере нужна обязательная проверка, запустите программу при n > 2, все остальное оставьте без изменений. На экране появится лишнее число, его надо исключить из предыдущих ответов. Там скорей всего 14 и будет лишним

    • @dashafire9576
      @dashafire9576 2 года назад

      @@ДмитрийПаршиковЕГЭИнформатика Немного не поняла, в какой строчке программы надо поставить n > 2. Вы имеете в виду самую первую строку внутри функции (строку if a >= 29 or n > 2)? Но в ней ведь уже есть условие на n > 2

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  2 года назад

      @@dashafire9576 это число в условие нужно менять от задания к заданию. Оно как бы следит за тем, чтобы в игре не пошли лишние ходы.
      В 19 номере лишние ходы больше 2, n > 2
      В 20 n > 3
      В 21 n > 4 , и вот тут программу надо запустить сперва так и после этого поменять на n > 2 для проверки.

  • @valera7522
    @valera7522 9 месяцев назад

    задание номер 4829, сайт полякова, вопрос 3. всё банально: у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети, и у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. найдите s
    def f(a, n):
    if a>=100 or n>4:
    return n==2 or n==4
    m=[f(a+1, n+1), f(a+3, n+1), f(a*3, n+1)]
    if n%2==0:
    return all(m)
    return any(m)
    for s in range(1, 100):
    if f(s, 0):
    print(s)
    потом меняем n>4 на n>2 и избавляемся от лишних значений. при n>4 выводятся значения 29, 31, 33, при n>2 только 33. помимо того, что у нас получается два значения (29, 31), а не одно, так правильный ответ вообще 10. подскажите, пожалуйста, что не так :/

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  9 месяцев назад +1

      привет, там доп условие есть -При этом нельзя повторять ход, который только что сделал второй игрок

    • @valera7522
      @valera7522 9 месяцев назад

      @@ДмитрийПаршиковЕГЭИнформатика нда. привык уже типичные задачи нарешивать, не вчитываюсь. как это условие грамотно вписать в ваш код?

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  8 месяцев назад +1

      @@valera7522 надо дополнительный аргумент завести, по которому можно будет определять ранее сделанные ходы и соответствующим образом реагировать. А далее уже формировать список допустимых ходов проверкой условий.
      В тг я побыстрее отвечаю, если что, там есть чат для вопросов или на основном под любым постом

  • @keine_angste
    @keine_angste 5 месяцев назад

    Господи, ну наконец хоть немного у меня жетончик провалился😂 Для меня до этого теория игр казалась вообще темным лесом..

  • @ДашаСергеева-ф1ч
    @ДашаСергеева-ф1ч 2 года назад +2

    спасибо огромное, очень понятно

  • @PassiveIncome-dk3ty
    @PassiveIncome-dk3ty 2 года назад +3

    Способ пушка

  • @blacksheep2534
    @blacksheep2534 5 месяцев назад +1

    я не совсем разобрался зачем он возвращает n ==2(я понимаю ,что это проверка ,но зачем возвращает непонятно) .Код работает на 10/10 и ускоряет решение заданий раза в два

  • @leerov
    @leerov 2 года назад

    очень качественное видео, спасибо вам

  • @TV-oe3el
    @TV-oe3el 17 дней назад

    Здравствуйте, можно спроситт, почему n равняется в конце 0, ведь к нему прибавлялись значения

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  10 дней назад

      привет, ты имеешь ввиду вне функции в print? Это наоборот начальное значение, n = 0 означает, что пока сделано 0 ходов

    • @TV-oe3el
      @TV-oe3el 8 дней назад

      Это получается мы потом в функции их добавляем?

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  8 дней назад

      @@TV-oe3el да, в функции сама игра уже последовательно начинается. Там как раз n + 1 изменяет номер хода и означает, что в следующий ход стало вот столько-то камней в куче

  • @Crazy_D0c
    @Crazy_D0c 7 месяцев назад +1

    def f(a, n):
    if a >= 29 or n > 2:
    return n == 2 or n == 4
    if n % 2 == 0:
    return all([f(a + 1, n + 1), f(a * 2, n + 1)])
    return any([f(a + 1, n + 1), f(a * 2, n + 1)])
    for s in range(1, 29):
    if f(s, 0):
    print(s)
    # Ответ 14, а правильный 12
    # 🙃

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  7 месяцев назад

      привет, а ты n > 2 забыл поменять на n > 4/ У тебя Ваня не успевает второй раз походить
      тогда 12 будет)

    • @Crazy_D0c
      @Crazy_D0c 7 месяцев назад

      @@ДмитрийПаршиковЕГЭИнформатика Да, 4 верный вариант.
      А как вы на 14:06 советуете и зачем? Вы же про двойку говорите, но этот ход нас не интересует. Объясните, пожалуйста.

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  7 месяцев назад +1

      @@Crazy_D0c cмотри, это уже финальная проверка для исключения лишний позиции. Тебе по заданию говорят в №21 - Ваня не должен гарантированно выйграть первым ходом.
      когда ты пишешь n > 4, ты находишь ответы, а n > 2 ты уже делаешь проверку и исключаешь эту лишнюю позицию.

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  7 месяцев назад +1

      @@Crazy_D0c а просто может быть такое, что тебя попросят по заданию выбрать максимальное , и при n > 4 на экране появились числа:
      12
      13
      14
      Человек не думая может выбрать число 14, но оно лишнее т.к. Ваня гарантировано при 14 выигрывал первым ходом. Вот чтобы его исключить, понимать. какое именно число, то лучше сделать проверку при n > 2

    • @Crazy_D0c
      @Crazy_D0c 7 месяцев назад

      @@ДмитрийПаршиковЕГЭИнформатика Благодарю!

  • @wixight
    @wixight 5 месяцев назад

    Шикарное объяснение, но как быть, если последний игрок, сделавший ход проигрывает?

  • @кабан-ф4ц
    @кабан-ф4ц 6 месяцев назад

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

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  6 месяцев назад +1

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

  • @tayagamer3005
    @tayagamer3005 11 месяцев назад

    А если задание такое: найдите минимальное и максимальное значения S, при которых Ваня выигрывает своим первым или вторым ходом, *при этом для любого значения у Вани есть возможность выиграть своим первым ходом (в случае ошибки Пети)?*
    Я не могу понять, как записать жирную часть условия.

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  11 месяцев назад

      я бы это двумя запусками решал.
      Нашел сперва ответ на вопрос, при каких S Ваня выигрывает 1 или 2 ходом.
      Далее нашел бы S, при котором Ваня выйграет первым ходом в случае неудачного хода Пети
      И после посмотрел бы, где они пересекаются
      Например, если на первый вопрос ответы будут - 16, 17, 18, 19, 20
      А на второй : 17, 18. 19, 21, 22, 23,24
      То минимум и максимум, который есть в двух наборах - это 17 и 19

  • @valera7522
    @valera7522 9 месяцев назад

    задание номер 6770, сайт полякова. вопрос 3, условие как на 13:32, только ищем max S. моя программа выдаёт числа "20, 21, 26, 29", правильный ответ "21". не могу понять в чём ошибка
    def f(a, n):
    if a>=82 or n>4:
    return n==2 or n==4
    m=[f(a+2, n+1), f(a+4, n+1), f(a*3, n+1)]
    if n%2==0:
    return all(m)
    return any(m)
    for s in range(1, 82):
    if f(s, 0):
    print(s)

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  9 месяцев назад

      Валера, привет, все правильно, ты нашел позиции, из которых можно выиграть первым или вторым ходом, НО при этом туда попали позиции, из которых выигрывают ТОЛЬКО первым ходом. Их нужно исключить, как я показывал в видео.
      Просто в программе поменяй n > 4 на n >2 и ты увидишь лишнии позиции (26, 27):
      def f(a, n):
      if a>=82 or n>2:
      return n==2 or n==4
      m=[f(a+2, n+1), f(a+4, n+1), f(a*3, n+1)]
      if n%2==0:
      return all(m)
      return any(m)
      for s in range(1, 82):
      if f(s, 0):
      print(s)

    • @valera7522
      @valera7522 9 месяцев назад

      @@ДмитрийПаршиковЕГЭИнформатика спасибо, понял :)
      можете ещё подсказать, что означает условие "Петя может выбирать, каким ходом выиграет Ваня"?

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  9 месяцев назад

      @@valera7522 понятия не имею 😅 вероятно, имеется ввиду, что есть такие позиции, где Петя может специально поддаться и сделать так, что Ваня победит. Типа специальный неудачный ход

  • @astronaut1751
    @astronaut1751 2 года назад +1

    Здравствуйте ! Почему в 14:05 вы меняете n > 4 на n > 2 ведь на n > 4 выводит два значения 14 и 12 --- а на --- n > 2: выводит 14 ведь нам что нужно так и не понял , ответ будет 12 ?

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  2 года назад +1

      Здравствуйте! В номере 21 есть противное ограничение, у игрока не должно быть ГАРАНТИРОВАННОЙ победы первым ходом. Его обязательно нужно учесть
      Когда вы пишете условие с n > 4, в ответе могут оказаться лишние числа(иногда они совпадают с ответом на 19 номер). Повторный запуск с n > 2 позволяет определить эти лишние числа и взять оставшиеся
      Например, когда я запускаю с n > 4, ответ будет:
      13
      20
      27
      Далее для проверки запускаем с n > 2:
      27
      Значит хорошие числа только 13 и 20. Если вопрос был найти наибольшее,то ответ 20. Без проверки случайно можно взять число 27

    • @astronaut1751
      @astronaut1751 2 года назад

      @@ДмитрийПаршиковЕГЭИнформатика Спасибо большое , а в 19:54 можно сделать покомпактнее ? например вот так вот :
      if a >= 65 or n > 2 :
      if a > 100:
      return False
      return n == 2
      насколько это верно , подскажите пожалуйста , спасибо большое за ваш труд !

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  2 года назад +1

      @@astronaut1751 можно) но только в номере 19, в номерах 20-21 вместо False нужно написать n % 2 == (0 или 1) смотря какой ХОД_ПРОТИВНИКА

  • @Inanti...
    @Inanti... 2 года назад

    Очень крутой и простой способ, но что делать если в задании -1 и // 2? Оно не хочет решаться, скорее всего проблемы с тем, что не всегда можно //2, но куда вставлять вот такие доп проверки на возможность делить и тд?

  • @nxzdix
    @nxzdix 6 месяцев назад

    здравствуйте, в 2024 году для сдачи егэ этот способен ещё актуален?

  • @pryny5605
    @pryny5605 2 года назад +1

    будет ли разбор 19 номера из статграда 22.02.22

  • @senuaksuuu4902
    @senuaksuuu4902 Год назад

    добрый день,помогите,пожалуйста, 19 получается,а дальше никак( сверяю с вашим кодом и не могу ошибку найти. вот,например,делала 20 номер с решу егэ,вот задание:Тип 20 №
    27755
    Добавить в вариант
    Сообщить об ошибке
    i
    Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч один камень или увеличить количество камней в куче в четыре раза. Например, пусть в одной куче 6 камней, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из четырёх позиций: (7, 9), (24, 9), (6, 10), (6, 36). Чтобы делать ходы, у каждого игрока есть неограниченное количество камней.
    Игра завершается в тот момент, когда суммарное количество камней в кучах становится не менее 61. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 61 или больше камней.
    В начальный момент в первой куче было 3 камня, во второй куче  - S камней, 1 ≤ S ≤ 57.
    Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока  - значит, описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника. В описание выигрышной стратегии не следует включать ходы играющего по ней игрока, которые не являются для него безусловно выигрышными, то есть не гарантируют выигрыш независимо от игры противника.
    Найдите два таких значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:
    - Петя не может выиграть за один ход;
    - Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
    Найденные значения запишите в ответе в порядке возрастания без разделительных знаков.
    вот,что я писала:
    def f(a, b, n):
    if a + b >=61 or n >3:
    return n == 3
    if n % 2 == 1:
    return all([f(a+1,b,n+1),f(a*4,b,n+1),f(a,b+1,n+1),f(a,b*4,n+1)])
    return any([f(a+1,b,n+1),f(a*2,b,n+1),f(a,b+1,n+1),f(a,b*2,n+1)])
    print([s for s in range(1,57+1) if f(3,s,0)])
    вроде всё также,но ничего не выдаёт,в чём ошибка?

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  Год назад

      Добрый день, а у вас что-то с ходами в any, будто из другого решения скопировали)
      делайте переменную отдельно для ходов:
      m =[f(a+1,b,n+1),f(a*4,b,n+1),f(a,b+1,n+1),f(a,b*4,n+1)] и потом ее передавайте в all и any
      if n % 2 == 1:
      return all(m)
      return any(m)

  • @user-n-x6l
    @user-n-x6l 2 года назад

    Как быть если ход нельзя повторять, как в задании статграда за 08.02.22? Спасибо

  • @mezumidumpling
    @mezumidumpling 11 месяцев назад

    А если условие, что кто-то проиграл? Тот, кто первый набрал >=32 камней, проиграл. Тогда данный код не подходит?

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  11 месяцев назад

      привет, подходит, там совсем немного условие нужно будет изменить. Если не получится - напиши, помогу

    • @mezumidumpling
      @mezumidumpling 11 месяцев назад

      ​​​​@@ДмитрийПаршиковЕГЭИнформатика поправочка: там s>=33. Так вот, я изменяла вторую строчку кода, делала
      *if a(от условия зависит)*
      Ну, по логике, теперь просто тот, у кого в куче будет *меньше* 33 камней, победит. Не получилось, код ничего не выдал.
      Условие такое: Петя первый, Ваня второй. Одна куча, s камней, 1

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  11 месяцев назад

      @@mezumidumpling, смотри, получается принцип такой же, твоя задача понять, когда в игре кто-то набирает >= 33, то есть условие
      if s >= 33 не меняется, только теперь тебе важно, чтобы это происходило не во время хода игрока, который должен победить, а его противника.
      Например, мы также проверим
      if s >= 33 or n > 2:
      return n == 2 (проверяем, что это Ваня перебрал, тогда Петя выйграл)
      далее как всегда, ходы и тд
      if n % 2 == 1:
      return all(...)
      return any(...)

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  11 месяцев назад

      @mezumidumpling
      Если не получится, попробуй так
      def f(s, n):
      if s >= 33 or n > 2:
      return n == 2
      moves = [f(s + 1, n + 1), f(s * 3 - 1, n + 1)]
      if n % 2 == 1:
      return all(moves)
      return any(moves)
      for S in range(1, 32 + 1):
      if f(S, 0):
      print(S)

    • @mezumidumpling
      @mezumidumpling 11 месяцев назад

      ​@@ДмитрийПаршиковЕГЭИнформатика огромное спасибо, с первым вопросом всё получилось, ответ правильный. Но на остальных вопросах не работает, хотя пользуюсь тем же принципом :D
      Допустим, "Вася гарантированно выигрывает в один ход после 2 хода Пети". То есть всего 4 хода, П-В-П-В. На 4-ом Вася выигрывает; для этого мы проверяем, что Петя набрал s>=33 на 3-ьем ходе.
      If a>=33 or n>3:
      return n==3
      if n%2==0:
      return all(..)
      return any(..)
      Логика *та же,* но программа не работает :/

  • @АндрейВасильков-ю6м

    Спасибо!

  • @SuperMrAndrik
    @SuperMrAndrik 2 года назад

    Спасабосо 🔥

  • @daaaaamn_boy9717
    @daaaaamn_boy9717 2 года назад

    Очень интересно

  • @vihapp4634
    @vihapp4634 Год назад

    Здравствуйте встретила такое условие, что камней больше 10. s>10 Т.е лимит мы не знаем как тогда быть? В начальный момент в первой куче было 18 камней, во второй куче - S камней, S > 12.

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  Год назад

      Здравствуйте! Давайте разберемся, сможете в телеграмме скинуть скрин задания?

    • @vihapp4634
      @vihapp4634 Год назад

      @@ДмитрийПаршиковЕГЭИнформатика Конечно! Можно ваш тг?

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  Год назад

      @@vihapp4634 @pda028

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  Год назад

      Разобрались, в ближайшие дни открою текстовый канал на дискорд сервере, задавайте вопросы туда

    • @vihapp4634
      @vihapp4634 Год назад

      Здравствуйте ещё раз! Встретила задания про цепочки Укажите, у кого есть выигрышная стратегия при исходном наборе слов {АБВГДАБВГДХ, ДГВБАДГВБА}. Если у нас не цифры, а буквы(цепочки) как решать в такое случае, могли бы помочь?

  • @ЛеонидПроценко
    @ЛеонидПроценко 2 года назад

    Я так понимаю, что , когда с условием и двумя кучами нужно в начале писать так:
    ( на Кполякове №4734 про Витю и Пашу)
    def f(a, b, n):
    if a + b >= 47:
    if a + b

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  2 года назад +1

      Да, так нужно делать когда есть ограничение и по максимальной границе.
      Добавьте в первое условие or n > 4. И из полученных ответов исключите ответы для or n > 2. Найденное количество и будет ответом(я пояснял эту проверку, нужно исключить стратегии, где Ваня гарантированно выигрывает)

    • @ЛеонидПроценко
      @ЛеонидПроценко 2 года назад

      @@ДмитрийПаршиковЕГЭИнформатика Большое спасибо!

  • @a7dawhb2209d
    @a7dawhb2209d 2 года назад

    Разберите, пожалуйста, этот алгоритм для решения заданий на одну кучу. У меня код просто выдает все значения ренджа s. (28227)
    def f(a, n):
    if a >= 52 or n > 2:
    return n == 2
    return any([f(a+1, n+1),f(a+10, n+1)])
    for s in range(1, 52):
    if f(s, 0):
    print(s)

    • @MrGlhf
      @MrGlhf 2 года назад

      3 строка:
      return n==2

    • @a7dawhb2209d
      @a7dawhb2209d 2 года назад

      @@MrGlhf Точно, спасибо. Странно, что сам не заметил такую глупую ошибку.

  • @lovxxs
    @lovxxs Год назад

    а с возведением в квадрат как работать? я пишу a * a или a ** 2, и программа не работает

  • @lewnd
    @lewnd 2 года назад

    не понял только когда использовать any а когда использовать all?

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  2 года назад

      почти всегда будет так
      if ...
      return all([...])
      return any ([...])
      когда был неудачных ход, то везде any

    • @lewnd
      @lewnd 2 года назад

      @@ДмитрийПаршиковЕГЭИнформатика понял

  • @varvarapro7839
    @varvarapro7839 Год назад

    9:14 помогите я не могу понять вот это, когда any, a когда all.... Не могу понять 10000 раз пересмотрела этот момент

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  Год назад +1

      Привет! А здесь прям подробно это и не объяснялось, видео как краткая методичка.
      Ты можешь просто запомнить, что в if пишется all, вне пишется any. Кроме ситуации, когда противник сделал НЕУДАЧНЫЙ ход, в таком случае в обоих местах будет any()
      А так смысл всего этого, проверить ВСЕ ходы противника и убедиться, что на ВСЕ его ходы можно найти ХОТЯ БЫ ОДИН ответ. Поэтому ходы противника мы помещаем в all(), а игрока, который должен победить в any().
      Условие if n % 2 == ..., как раз проверяет чей сейчас БЫЛ ход, для того чтобы правильно понять, чей будет следующий. Т.е. если БЫЛ ход Вани, то БУДЕТ ход Пети. Тогда на месте ..., мы пишем остаток связанный с игроком, который должен победить, чтобы после его хода - направить противника в all() и проверить все его ответы.
      Например, если должен победить Ваня, у тебя будет написано:
      if n % 2 == 0: #проверяем что был Ваня(четн)
      return all(...)
      return any(...)
      Вообще легко делать проверку у тебя проверка на четность в этом условии должна совпадать с четностью чисел наверху. Если в начале программы стоит return n == 3, то и в if будешь проверять нечетность n % 2 == 1. Если n == 2, то в if проверишь n %2 == 0

    • @varvarapro7839
      @varvarapro7839 Год назад

      @@ДмитрийПаршиковЕГЭИнформатика спасибо большое, вроде поняла))
      Нужно только закрепить нарешиванием этих задач

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  Год назад

      @@varvarapro7839 да, т.к. они с высокой вероятностью останутся шаблонными

  • @maksimlarin4302
    @maksimlarin4302 2 года назад

    А можно разбор на Java/Pascal?

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  2 года назад +1

      Разбор сперва планировался только для учеников, если будет еще кому-то актуально, то думаю можно будет сделать на других ЯП)

  • @МаксимДураксим
    @МаксимДураксим Год назад

    Второе как раз четное число 5:15

  • @amigo9987
    @amigo9987 5 месяцев назад

    thx

  • @thescore91
    @thescore91 2 года назад

    Вариант 11 из сборника Крылова 2022года. Если нужно полный текст, могу скинуть. Почему в 20-21 заданиях не получается ответ? В задании 20 ответ 35 и 70, у меня только 70. В задании 21 ответ 69, у меня 71. Скинул как делал 20
    def f(a,b,n):
    if a+b>=144 or n>3:
    return n==3
    if n%2==1:
    return all([f(a+1,b,n+1),f(a*2,b,n+1),f(a,b+1,n+1),f(a,b*2,n+1)])
    return any([f(a+1,b,n+1),f(a*2,b,n+1),f(a,b+1,n+1),f(a,b*2,n+1)])
    for s in range(1, 143):
    if f(1, s, 0):
    print(s)
    Это 21:
    def f(a,b,n):
    if a+b>=144 or n>4:
    return n==2 or n==4
    if n%2==0:
    return all([f(a+1,b,n+1),f(a*2,b,n+1),f(a,b+1,n+1),f(a,b*2,n+1)])
    return any([f(a+1,b,n+1),f(a*2,b,n+1),f(a,b+1,n+1),f(a,b*2,n+1)])
    for s in range(1, 143):
    if f(1, s, 0):
    print(s)

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  2 года назад

      Внимательно почитайте, что должно быть не менее 144 камней. А так все отлично написано, только в том моменте ошибка

    • @thescore91
      @thescore91 2 года назад

      @@ДмитрийПаршиковЕГЭИнформатика спасибо. Удивлён, что номер 19 у меня получился правильно с неверным условием 🤣

    • @thescore91
      @thescore91 2 года назад

      @@ДмитрийПаршиковЕГЭИнформатика Блин, эти я решил. 19 и 21 следующего 12 варианта тоже, а в 20 откуда-то одно лишнее значение 23 🙈 В 13 варианте тоже в 20 номере 3 ответа пишет
      12 вариант:
      def f(a,b,n):
      if a*b>=144 or n>3:
      return n==3
      if n%2==1:
      return all([f(a+1,b,n+1), f(a*2,b,n+1), f(a,b+1,n+1), f(a,b*2,n+1)])
      return any([f(a+1,b,n+1), f(a*2,b,n+1), f(a,b+1,n+1), f(a,b*2,n+1)])
      for s in range(1,142):
      if f(2,s,0):
      print(s)
      Уже раз 5 проглядел код, вроде всё верно, поэтому без понятия

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  2 года назад

      @@thescore91 if f(2,s,0): в предпоследней строчке ошибка, внимательно посмотри, сколько камней в 1-ой куче в начале игры

    • @thescore91
      @thescore91 2 года назад

      @@ДмитрийПаршиковЕГЭИнформатика "В начальный момент в первой куче было два камня"

  • @frame1256
    @frame1256 2 года назад +1

    за день наботаю ?

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  2 года назад

      вполне реально)

    • @frame1256
      @frame1256 2 года назад

      @@ДмитрийПаршиковЕГЭИнформатика Хорошо, буду отписываться с каждым результатом) Мне вот было бы интересно посмотреть у вас программки для 16 и 23 задания

  • @МаксимЧ-у1ъ
    @МаксимЧ-у1ъ 2 года назад +1

    я один ничего не понял... any all что это такое

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  2 года назад

      Если вы сдаете на python - почитайте в интернете, как работают эти функции. Конкретно в данном номере мы их используем так:
      any - ищем хотя бы один выигрышный ход игрока, если такой ход найдется - значит стратегия для нас выигрышная
      all - на все ходы противника, если хотя бы один False - стратегия проигрышная
      через any ходит игрок, который должен победить по условию, через all - противник. Ход игрока, сделавшего последний ход проверяется в if через остаток

    • @МаксимЧ-у1ъ
      @МаксимЧ-у1ъ 2 года назад

      @@ДмитрийПаршиковЕГЭИнформатика Спасибо я разобрался с кодом, просто не знал "Трехместное выражение if/else" сейчас разбираюсь в коде,
      КЛассно придумано!
      Долго создавали алгоритм?

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  2 года назад

      @@МаксимЧ-у1ъ недолго) как сразу компьютерный егэ появился, немного адаптировал его только в процессе работы с учениками. Это базовый алгоритм через рекурсию, думаю, если полазить в интернетах, то много у кого будет похожий подход

  • @firesteel1313
    @firesteel1313 2 года назад

    Не совсем понимаю кого вы имеете в виду под противником, если в условии у нас только Петя и Ваня. Слова "противник" даже в условии нет. У нас просто 2 игрока имеются и по ним строятся случаи.

  • @slammmedd
    @slammmedd 4 месяца назад

    практически ни черта не понял. то ли я тупой, то ли задача мудрёное недоразумение

  • @felixmarlboro7808
    @felixmarlboro7808 Год назад

    9:13 14:30

  • @slain1gg
    @slain1gg 2 года назад

    Если вы не понимаете как адаптировать задание по эксель, значит плохо пытались. Решать игры нужно уметь всеми способами, чтобы можно было себя перепроверить. Поэтому я сочувствую вам, если вы не умеете решать игры а Экселе

    • @taynori7818
      @taynori7818 2 года назад +3

      Чел, это программа, которая выдаст тебе ответ за 5 минут, причем шанс ошибки и человеческого фактора буквально в пяти позициях. В экселе же в 21 задании таблица не помещается на экран и шанс ошибки там куда выше, чем с этими пятью позициями

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  2 года назад +1

      а кто сказал, что я чего-то не понимаю? Перепроверять себя всеми способами, это сколько времени нужно отдать, 15-20 минут? Достаточно написать программу и перепроверить себя руками. Если у вас получается решать экселем - супер. Но рекомендовать его как основной способ решения - никогда не буду

  • @h3nkyy
    @h3nkyy 2 года назад

    Не понятный видос от слова совсем. Народ не забивайте мозги такими объяснениями. Эти номера руками в два счёта делать.

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  2 года назад +1

      Спасибо за мнение. Такими объяснениями люди забивают себе мозги и стабильно решают задание на три балла, а делать "перебор руками в два счета", учитывая сколько времени вы на это потеряете, крайне сомнительная затея. Для перепроверки - если только. Ну и плюс человеческий фактор никто не отменял при ручном анализе.
      Успехов на экзамене

    • @ДмитрийПаршиковЕГЭИнформатика
      @ДмитрийПаршиковЕГЭИнформатика  2 года назад +1

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

  • @NastushaAir
    @NastushaAir 11 месяцев назад +4

    Спасибо большое, очень помогли 🙏💕

  • @ШиманскийСтанислав

    Спасибо!