Тёмный

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

ИНФОРМАТИКА ЕГЭ 2024 99 БАЛЛОВ
Подписаться 23 тыс.
Просмотров 69 тыс.
50% 1

Если ты читаешь это, то тебе крупно повезло, ведь ты можешь прямо сейчас начать мощную подготовку к ЕГЭ с 15% скидкой!!! Получи заветную сотку на ЕГЭ без проблем и стресса вместе с 99 баллов. Пиши кодовое слово "ФИНИШ", чтобы узнать подробнее или записаться:
99ballov_inf
Меня зовут Даня Казаков и я преподаватель информатики в онлайн школе 99 баллов.
- Сдал новый компьютерный ЕГЭ на 100 баллов.
- Преподаю уже 5-ый год
- Выпустил более 4500 учеников
- Средний балл выпускников мастер группы - 85.1
Полезные ссылки:
Решения новых и ваших задач: clck.ru/33aWSF
Наша группа ВКонтакте - 99ballov_inf
Наш телеграм - t.me/inf99ballov
Отзывы о мастер-группе - topic-181521908_400571...
Канал автора кода: www.youtube.com/@toadharvard/...
Подписывайся на канал, пиши комментарии, ставь лайк и прожимай колокольчик, чтобы не пропустить новые занятия!
Музыка на фоне: Lofi Girl
#99баллов #99баллов_информатика #даняказаков #егэ

Опубликовано:

 

18 фев 2023

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 134   
@user-pe9wq6bi4c
@user-pe9wq6bi4c Год назад
вы прекрасны, я счастлив, что теперь понимаю теорию игр, и всё благодаря вам!!!! Спасибо
@_sanmo_7671
@_sanmo_7671 Год назад
большое спасибо, смотрела много разборов, и только сейчас поняла
@A3OT_Replays
@A3OT_Replays Месяц назад
Спасибо большое! Очень рад тому, что нашёл гибкий способ для ТИ. Целую недели искал и не мог найти))
@ennhao768
@ennhao768 2 месяца назад
лучшииий, очень круто объяснил, еще и через прогу!!
@rand111qq
@rand111qq 4 месяца назад
невероятно помогло, большое спасибо!
@redtroll2830
@redtroll2830 11 месяцев назад
Подскажите пожалуйста как решить эту задачу способом из видео но так чтобы она не выходила за предел рекурсии Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один камень или возвести количество камней в квадрат. Например, имея кучу из 7 камней, за один ход можно получить кучу из 8 или 49 камней. У каждого игрока, чтобы делать ходы, есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится 100 или более. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 100 или больше камней. В начальный момент в куче было S камней, 1 < S < 99. Говорят, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока - значит, описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника. Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, когда такая ситуация возможна.
@keitkeit3764
@keitkeit3764 Год назад
Привет, просто интересно)) Сколько в месяц зарабатываешь на репетиторстве? Больше 150к?
@nester9152
@nester9152 11 месяцев назад
Спасибо за 3 балла на егэ ❤
@IDAHOBI
@IDAHOBI Год назад
13.35 что нужно прописать, чтобы не учитывать ходы которые ведут в значение больше 60?
@barabarabaraberebereberee
@barabarabaraberebereberee Год назад
А что делать, если игрок не может повторять свой собственный последний ход? Из РЕШУ ЕГЭ под номерами 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 Год назад
Почаще делай видео, быстрее и познавательнее смотреть, чем вебинары
@user-jn4ob5gb7x
@user-jn4ob5gb7x Год назад
😐😐😐
@favn2858
@favn2858 9 месяцев назад
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч один камень или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень меньше, чем убирается). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 20. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 20 или меньше камней. В начальный момент в первой куче было 10 камней, во второй куче  - S камней, S > 10. Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите максимальное значение S, когда такая ситуация возможна.
@NikolayUchitel
@NikolayUchitel Год назад
Лайк. Репост. Спасибо. Очень недурно
@inf99ballov
@inf99ballov Год назад
Рад стараться
@glinomeszhidkiy
@glinomeszhidkiy 5 месяцев назад
спасибо большое!!!
@user-tb1nm2db3d
@user-tb1nm2db3d Год назад
огромное спасибо
@Q_1_2_m
@Q_1_2_m Год назад
Можете помочь, у меня достигается максимум рекурсии, хотя кэширование я сделал. Что делать в таком случае?
@homegame8787
@homegame8787 11 месяцев назад
В заданиях с двумя кучами пишет что a не определено. и ошибку выдает в строке a,b=h. Что делать??
@j1su174
@j1su174 11 месяцев назад
Большое спасибо за разбор, стало намного проще и в целом понятней, как решать такие задачи, но вот у меня попалась такая вариация задачи, когда не "нельзя повторять ход, который сделал второй игрок", а "нельзя повторять ход, который этот же игрок делал на предыдущем ходу". Всё пытался догадаться, как изменить код в таком случае, но так и не додумался. Сможете, пожалуйста, помочь?
@kreaasociopances6057
@kreaasociopances6057 11 месяцев назад
Догадался?
@j1su174
@j1su174 11 месяцев назад
@@kreaasociopances6057, Неа, так и не вышло
@morrisnight
@morrisnight Месяц назад
Просто мощь. Отлично снято, качество, звук, атмосфера, подача - подход к своей работе на высоте! Целеустремленность твоё второе имя. Дальше лучше.
@user-xq8nk6cm9f
@user-xq8nk6cm9f 20 часов назад
Люблю когда не надо думать, спасибо😘
@pusna5478
@pusna5478 11 месяцев назад
при поиске максимального S выдает на единицу меньше ответа. Можете подсказать?
@-fagi-5207
@-fagi-5207 Год назад
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит одна куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может а) убрать из кучи половину камней, если количество камней в куче делится на 2; иначе убрать из кучи два камня; б) убрать из кучи две трети камней, если количество камней в куче делится на 3; иначе убрать из кучи три камня. Например, пусть в куче 10 камней, тогда можно убрать половину или только три камня. А если в куче 12 камней, то можно убрать половину или две трети камней. Игра завершается в тот момент, когда в куче останется ровно 1 камень. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, в которой будет ровно 1 камень. В начальный момент в куче было S камней, 1 ≤ S ≤ 37.
@user-zi2mu1vn9b
@user-zi2mu1vn9b 11 месяцев назад
Помогите, прошу!!! Я просто не понимаю, моя программа в точности, как на видео, но она выводит только сообщение об ошибке максимума рекурсии. Условия: 1
@stafrhd
@stafrhd 2 месяца назад
Ну лучший. Прям спас.
@mr.mahlov4245
@mr.mahlov4245 11 месяцев назад
а что делать коогда в условии на две кучи камней в обоих неизвестное значение?
@leoshastin
@leoshastin Год назад
Ответить на 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 Год назад
душевно благодарен, добавлю такое решение в документ)
@stanislavchernov4248
@stanislavchernov4248 11 месяцев назад
как на 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)
@user-mn8yf8rg8o
@user-mn8yf8rg8o Год назад
я не понимаю суть функции game, как она работает. Если какой нибудь первый ход окажется выигрышным то выходит P1. А если все ходы выводят P1 то возвращается В1, это не понятно, почему при всех ходах когда петя выигрывает 1ым ходом у вани выигрышный? кажется я запутался, я чтото не так понял
@inf99ballov
@inf99ballov Год назад
Удобнее для понимания нарисовать дерево ходов, а я пока что объясню на словах: Петя по условию ходит всегда первый, значит если у него есть ХОТЯ БЫ ОДИН ход приводящий его к победе - то он и победит. Но такая конструкция не работает для Вани - ведь он ходит после Пети - поэтому чтобы доказать что выигрывает Ваня необходимо рассмотреть ВСЕ ходы Пети и при каждом доказать что Ваня побеждает. Что же касается P1 - это выигрышная стратегия - то есть та из которой можно выиграть и раз Все ходы ведут в такие позиции - значит из всех них будет побеждать мой оппонент - а значит я сам нахожусь в проигрышной
@elenamakarova1153
@elenamakarova1153 Год назад
а почему при более больших числах (200+) в стандартных задачах на одну кучу ничего не работает и можно ли это как-то решить ?
@mrvalary2
@mrvalary2 Год назад
Начинай перебор с больших чисел. Например у тебя победа с 350, тогда начни с 100
@mor9626
@mor9626 11 месяцев назад
достаточно добавить from sys import setrecursionlimit setrecursionlimit(2000)
@yummy7030
@yummy7030 11 месяцев назад
день до егэ) хыхыхы
@user-xs3ih5ex9q
@user-xs3ih5ex9q 3 месяца назад
Почему в задаче на две кучи 19 номер не считает? (не выдает никакой ответ,
@user-gm1lo7ce3t
@user-gm1lo7ce3t 8 месяцев назад
спасибо большое
@user-rl7kg1id6p
@user-rl7kg1id6p 7 месяцев назад
помогите пожалуйста, я решаю вашим способом, в целом всё ок, я всё понимаю, но попалась задача с условием "так же за всю игру можно только один раз сделать суперход - ход, после которого количество камней в куче не изменится, а очередь хода перейдёт к сопернику, т.е. суперход может сделать один раз либо Ваня, либо Петя". я не понимаю, как это прописать в коде
@Bogdashka
@Bogdashka Год назад
А все прототипы можно ли решить через эксель? Скажите, пожалуйста
@inf99ballov
@inf99ballov Год назад
Ну скорее всего можно, но в некоторых случаях очень "неприятно"
@marriiap
@marriiap 5 месяцев назад
а что делать если на код с 2 кучами выдает, что "a, b = h TypeError: cannot unpack non-iterable int object"
@inf99ballov
@inf99ballov 5 месяцев назад
ошибка в шаблоне, скорее всего забыла в основном цикле под функцией передавать h как 2 числа, поэтому и распаковать обратно он не может
@k_o_l_d_iplay9360
@k_o_l_d_iplay9360 Год назад
Отличное видео, но у меня до сих пор остался вопрос по #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 Год назад
Них у тебя код
@NoNo-pp1qz
@NoNo-pp1qz Год назад
Ты ещё на ассемблере черепашку пропиши
@matikkyt3710
@matikkyt3710 11 месяцев назад
кумир в помощь
@k_o_l_d_iplay9360
@k_o_l_d_iplay9360 11 месяцев назад
@@matikkyt3710 👌
@divine3728
@divine3728 Год назад
вчера на решу егэ мне попались задачи на теорию игр под номером 28236 по 28238 включительно, где в условиях можно к куче прибавить один камень или возвести в квадрат. скажите, пожалуйста, как правильно отразить это условие в коде?
@black_inside
@black_inside Год назад
def moves(h): return h+1, h**2
@divine3728
@divine3728 Год назад
@@black_inside я так и написал, но у меня выдаёт ошибку
@mor9626
@mor9626 11 месяцев назад
@@divine3728 выдаёт ошибку, т.к. ты бесконечно возводишь 1 в квадрат, поэтому начни перебор с 2
@s1sy4s1ck3
@s1sy4s1ck3 Год назад
Не понимаю почему не выдает ответ программа задача:Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч (по своему выбору) один камень или увеличить количество камней в куче в три раза. Например, пусть в одной куче 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) и что нужно найти дословно Потому что код написан верно
@loka8001
@loka8001 Год назад
Я немного не понял насчет "if h>60: return 'P1'" разве не B1 должно быть? если именно оппонент выигрывает или P2 а не P1?
@loka8001
@loka8001 Год назад
Если кто нибудь понял может пояснить поподробнее?
@Rostislaviooo
@Rostislaviooo Год назад
Как нужно изменить код, если в условии написано, что нельзя повторять прошлый ход этого же игрока. Вот условие: Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один камень, добавить два камня или увеличить количество камней в куче в два раза. При этом нельзя повторять ход, который этот же игрок делал на предыдущем ходу. Повторять чужие ходы и свои более старые ходы разрешается. Например, если в начале игры в куче 3 камня, Петя может первым ходом получить кучу из 4, 5 или 6 камней. Если Петя получил кучу из 5 камней (добавил два камня), то следующим ходом Ваня может получить 6, 7 или 10 камней. Если Ваня добавил один камень и получил 6 камней, то вторым ходом Петя может получить 7 или 12 камней. Получить 8 камней Петя не может, так как для этого нужно добавить 2 камня, а Петя делал это на предыдущем ходу. Чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается, когда количество камней в куче становится не менее 29. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 29 или больше камней. В начальный момент в куче было S камней, 1 ⩽ S ⩽ 28. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Укажите наименьшее значение S, при котором Петя не может выиграть за один ход, но у Пети есть выигрышная стратегия, позволяющая ему выиграть вторым ходом.
@end2395
@end2395 3 месяца назад
Как вариант, первое что приходит на ум это завести кортеж ходов, но сделаем его максимальной длины 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 3 месяца назад
@@end2395 Спасибо за идею, помог, но хочу подметить, что вместо "steps" в условии лучше использовать новую переменную, а то последний ход перемешивается и ответ на 46977 получается не правильным (но я решил).
@user-kt4ox4bm4g
@user-kt4ox4bm4g Год назад
А можешь, пожалуйста, разобрать задачи по теории игр, когда в условии написано "не следует"
@inf99ballov
@inf99ballov Год назад
Скинь пожалуйста такое условие, что-то я таких не припомню
@user-kt4ox4bm4g
@user-kt4ox4bm4g Год назад
@@inf99ballovПросто на курсы по подготовке к ЕГЭ хожу, теорию игр по твоим шаблонам делаю, сегодня даже учителю это шаблон показывал. Также большое тебе спасибо за всё то, что ты делаешь для нас, твои видео очень помогают. Ну а вот такую задачу я не сделал. Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч (по своему выбору) один камень или увеличить количество камней в куче в два раза. Например, пусть в одной куче 10 камней, а в другой 5 камней; такую позицию в игре будем обозначать (10, 5). Тогда за один ход можно получить любую из четырёх позиций: (11, 5), (20, 5), (10, 6), (10, 10). Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда суммарное количество камней в кучах становится не менее 77. Победителем считается игрок, сделавший последний ход, т.е. первым получивший такую позицию, при которой в кучах будет 77 или больше камней. В начальный момент в первой куче было семь камней, во второй куче - S камней; 1 ≤ S ≤ 69. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока - значит описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника. В описание выигрышной стратегии не следует включать ходы играющего по этой стратегии игрока, не являющиеся для него безусловно выигрышными, т.е. не являющиеся выигрышными независимо от игры противника. Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, когда такая ситуация возможна. Вот "не следует", как мне кажется, там для неё команду "else" может использовать нужно?
@inf99ballov
@inf99ballov Год назад
@@user-kt4ox4bm4g Так это же самая обычная задача на две кучи камней. Тебя смущает формулировка: Неудачного хода Пети? Я решал такую задачу в видео, погляди внимательнее(3 по счету вроде))) там нужно просто в одном моменте all ан any поменять и все
@inf99ballov
@inf99ballov Год назад
@@user-kt4ox4bm4g А вот этот кусок: """ Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока - значит описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника. В описание выигрышной стратегии не следует включать ходы играющего по этой стратегии игрока, не являющиеся для него безусловно выигрышными, т.е. не являющиеся выигрышными независимо от игры противника. """ Вообще рудимент, который остался с егэ 2020 годов, когда выигрышные стратегии расписывали руками - на него вообще забей)
@user-kt4ox4bm4g
@user-kt4ox4bm4g Год назад
@@inf99ballov понял, спасибо большое, что объяснил)
@sosun4lena453
@sosun4lena453 Год назад
вот есть будет другая задача на ЕГЭ, как перекрутить у себя всю эту логику в голове? это же не реально
@DZ-vq8db
@DZ-vq8db Год назад
Есть же, если ты не пень же, получиться же. А иначе же нафиг ты такой в унике нужен
@dizla1k157
@dizla1k157 Месяц назад
Так а что сложного? Код немного меняешь и все либо руками
@user-ei2zm5zy8r
@user-ei2zm5zy8r Год назад
👍 СЮДАААААА {под видео} 🦆
@battleunit4701
@battleunit4701 Год назад
Кто знает как решить ошибку: cannot unpack non-iterable int object. Она возникает только тогда , когда в задаче 2 кучи .
@inf99ballov
@inf99ballov Год назад
скинь свою прогу, я скажу где ошибка
@battleunit4701
@battleunit4701 Год назад
@@inf99ballov спасибо ,но я уже разобрался) В конце , условие нужно было из game(s) сделать game(h)
@rebellion255
@rebellion255 Год назад
В чем разница между вашим методом и "традиционным" методом через итерацию? 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 ну может он для тебя и стандартный, на самом деле решай так как тебе удобно, только попробуй решить все задачи из видео через свой код - если получится без проблем, то юзай его раз он тебе понятней
@user-iw4xj4mn1t
@user-iw4xj4mn1t 11 месяцев назад
P1 и B1 очень путают понимание рекурсии, надо было по другому обозвать
@ffiulopy2.0
@ffiulopy2.0 Год назад
На ЕГЭ могут попасться только камни или ещё что-то?
@inf99ballov
@inf99ballov Год назад
может быть что угодно, но из года в год только камни дают или что-то на них похожее
@bo3duxah
@bo3duxah Год назад
Разве в первой задаче ответ не 7? Петя выбирает h*2 и получает 14 камней, потом Ваня выбирает h*2 и получает 28 камней >=25, то есть выигрывает. Или я что-то не понимаю?
@inf99ballov
@inf99ballov Год назад
В задаче написано при ЛЮБОЙ ИГРЕ ПЕТИ а значит что ваня должен выиграть при обоих его ходах а не только при умножении на два
@Frensski
@Frensski 6 месяцев назад
сколько баллов дает эти 3 задания в сумме??
@user-xl9mv1nv2w
@user-xl9mv1nv2w 5 месяцев назад
3
@popugajara
@popugajara 2 месяца назад
код абсолютно не работает на некоторых задачах.
@artemvolkov2550
@artemvolkov2550 2 месяца назад
имба
@andycall1115
@andycall1115 Год назад
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч один камень или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень больше, чем убирается). Например, пусть в одной куче 6, а в другой 9 камней; такую позицию мы будем обозначать (6, 9). За один ход из позиции (6, 9) можно получить любую из четырёх позиций: (5, 9), (3, 9), (6, 8), (6, 5). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 40. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 40 или меньше камней. В начальный момент в первой куче было 20 камней, во второй куче  - S камней, S > 20. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока  - значит, описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника. В описание выигрышной стратегии не следует включать ходы играющего по ней игрока, которые не являются для него безусловно выигрышными, т.е не гарантирующие выигрыш независимо от игры противника. Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите максимальное значение S, когда такая ситуация возможна.
@inf99ballov
@inf99ballov Год назад
Решил чекай гугл документ
@user-ix4lw8un2c
@user-ix4lw8un2c Год назад
​@@inf99ballov Известно, что Петя проиграл своим вторым ходом после неудачного хода Вани. Такое может быть? И еще одна формулировка:Известно, что Петя выиграл своим вторым ходом после неудачного хода Вани
@sparrrxw
@sparrrxw Год назад
@@inf99ballov по условию s > 20. но в коде в цикле for ты перебираешь от 20 включительно. я проверил: на ответ это не повлияло, но исправь всё же, пожалуйста
@rai_bon8117
@rai_bon8117 4 месяца назад
Так и не понял, что такое P1, P2, B1, B2?
@Stusl1k
@Stusl1k 2 месяца назад
голос на пятёрку похож)
@ZXC_BEBRA69
@ZXC_BEBRA69 4 месяца назад
а теория игр только на камни существует?
@surikatio
@surikatio Год назад
У меня задача аналогична первой, но всего лишь отличаются ходы и количество камней в куче, требуемое для выигрыша, код для задачи из видео работает, но для моей выдает макс глубину рекурсии... Изменено: проблема в том , что второй ход сначала умножает на 4, а затем вычитает из кучи 3 камня, но я все равно не пойму где рекурсия не может остановиться...
@surikatio
@surikatio Год назад
итак, проблему решил тем, что начал перебирать цикл не с 1, а с 2(просто другие решения данной проблемы выдают ошибку)
@haemi6899
@haemi6899 11 месяцев назад
какие 3 месяца. осталось 13 часов😋
@hash1r1ya
@hash1r1ya 11 месяцев назад
понимаю
@pslups9086
@pslups9086 Год назад
метод алексея кабанова короче и красивей будет
@inf99ballov
@inf99ballov Год назад
Согласен, на мой взгляд, этот просто по-понятнее, ну а вы выбирайте сами)
@itchyyy1529
@itchyyy1529 5 месяцев назад
код перестает работать при большом количестве камней
@anus8346
@anus8346 4 месяца назад
import sys sys.setrecursionlimit(2500) # увеличивай значение, пока ошибка не пропадет это исправит проблему с глубиной рекурсии
@alextarr430
@alextarr430 Год назад
код некорректно работает при других числах
@inf99ballov
@inf99ballov Год назад
Код как раз работает корректно, возможно ты просто ошибся, скинь задачу и свое решение я посмотрю
@alextarr430
@alextarr430 Год назад
@@inf99ballov я пробовал его на двух разных задачах и в обоих случаях он выдавал слишком большое число (19 задача), а при слишком маленьком значении (собственно говоря, правильном ответе) в результате было None. Из-за чего это может быть?
@inf99ballov
@inf99ballov Год назад
@@alextarr430 Ошибка могла быть где угодно, может быть ты all на any не менял потому что как правило в 19 задачи нужен неудачных ход пети. Но ответить точно смогу только если взгляну на пример
@alextarr430
@alextarr430 Год назад
@@inf99ballov мои комментарии с задачей и кодом почему-то удаляются сами по себе после отправления(( Могу я скинуть на почту или еще куда-то?
@inf99ballov
@inf99ballov Год назад
@@alextarr430 по ссылке в описании есть телеграм канал, можешь в комменты просто скинь куда-нибудь под постом
@varvarapro7839
@varvarapro7839 Год назад
🦆
@Reilinsger
@Reilinsger 3 месяца назад
Теория подставы...
@user-yw1yr2xi1l
@user-yw1yr2xi1l 27 дней назад
я ору чаечкой с названий файлов
@Chouseeeeeeee
@Chouseeeeeeee 6 месяцев назад
😂ты на того типа из волчонка похож
@begidurak
@begidurak Год назад
А как все это запомнить ахаха
@inf99ballov
@inf99ballov Год назад
практика и практика))
@hersgoryydamn6416
@hersgoryydamn6416 19 дней назад
код не рабочий )
@kubsupreme1629
@kubsupreme1629 День назад
Всмысле?
@kubsupreme1629
@kubsupreme1629 22 часа назад
Почему?
@user-hk6dx2ju6x
@user-hk6dx2ju6x 5 месяцев назад
Программа работает не так, как на видео. Она неправильная
@inf99ballov
@inf99ballov 4 месяца назад
как же она тогда выдает правильные ответы?
@ayezxc
@ayezxc Месяц назад
ты сигма
@dima_5145
@dima_5145 3 месяца назад
у тебя голос как у пятёрки...
@dyingangell3340
@dyingangell3340 Год назад
бл я один нечего не понимаю?
@Stayfashan_P
@Stayfashan_P Год назад
брух
@xra.0
@xra.0 3 месяца назад
Для задания 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), но в целом код рабочий!
@user-xs3ih5ex9q
@user-xs3ih5ex9q 3 месяца назад
Почему в задаче на две кучи 19 номер не считает? (не выдает никакой ответ,
Далее
САМЫЕ ТУПЫЕ МАЖОРЫ С ПАТРИКОВ
33:19
BIG PANDA AI
2:07
Просмотров 12