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

  Рет қаралды 68,489

ИНФОРМАТИКА ЕГЭ 2024 99 БАЛЛОВ

ИНФОРМАТИКА ЕГЭ 2024 99 БАЛЛОВ

Жыл бұрын

Если ты читаешь это, то тебе крупно повезло, ведь ты можешь прямо сейчас начать мощную подготовку к ЕГЭ с 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баллов_информатика #даняказаков #егэ

Пікірлер: 132
@user-pe9wq6bi4c
@user-pe9wq6bi4c Жыл бұрын
вы прекрасны, я счастлив, что теперь понимаю теорию игр, и всё благодаря вам!!!! Спасибо
@A3OT_Replays
@A3OT_Replays 29 күн бұрын
Спасибо большое! Очень рад тому, что нашёл гибкий способ для ТИ. Целую недели искал и не мог найти))
@_sanmo_7671
@_sanmo_7671 Жыл бұрын
большое спасибо, смотрела много разборов, и только сейчас поняла
@ennhao768
@ennhao768 2 ай бұрын
лучшииий, очень круто объяснил, еще и через прогу!!
@rand111qq
@rand111qq 4 ай бұрын
невероятно помогло, большое спасибо!
@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 Жыл бұрын
😐😐😐
@redtroll2830
@redtroll2830 11 ай бұрын
Подскажите пожалуйста как решить эту задачу способом из видео но так чтобы она не выходила за предел рекурсии Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один камень или возвести количество камней в квадрат. Например, имея кучу из 7 камней, за один ход можно получить кучу из 8 или 49 камней. У каждого игрока, чтобы делать ходы, есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится 100 или более. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 100 или больше камней. В начальный момент в куче было S камней, 1 < S < 99. Говорят, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока - значит, описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника. Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, когда такая ситуация возможна.
@morrisnight
@morrisnight Ай бұрын
Просто мощь. Отлично снято, качество, звук, атмосфера, подача - подход к своей работе на высоте! Целеустремленность твоё второе имя. Дальше лучше.
@IDAHOBI
@IDAHOBI Жыл бұрын
13.35 что нужно прописать, чтобы не учитывать ходы которые ведут в значение больше 60?
@keitkeit3764
@keitkeit3764 Жыл бұрын
Привет, просто интересно)) Сколько в месяц зарабатываешь на репетиторстве? Больше 150к?
@glinomeszhidkiy
@glinomeszhidkiy 5 ай бұрын
спасибо большое!!!
@nester9152
@nester9152 11 ай бұрын
Спасибо за 3 балла на егэ ❤
@favn2858
@favn2858 9 ай бұрын
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может убрать из одной из куч один камень или уменьшить количество камней в куче в два раза (если количество камней в куче нечётно, остаётся на 1 камень меньше, чем убирается). Игра завершается в тот момент, когда суммарное количество камней в кучах становится не более 20. Победителем считается игрок, сделавший последний ход, то есть первым получивший позицию, в которой в кучах будет 20 или меньше камней. В начальный момент в первой куче было 10 камней, во второй куче  - S камней, S > 10. Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите максимальное значение S, когда такая ситуация возможна.
@user-tb1nm2db3d
@user-tb1nm2db3d Жыл бұрын
огромное спасибо
@NikolayUchitel
@NikolayUchitel Жыл бұрын
Лайк. Репост. Спасибо. Очень недурно
@inf99ballov
@inf99ballov Жыл бұрын
Рад стараться
@user-zi2mu1vn9b
@user-zi2mu1vn9b 11 ай бұрын
Помогите, прошу!!! Я просто не понимаю, моя программа в точности, как на видео, но она выводит только сообщение об ошибке максимума рекурсии. Условия: 1
@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 кучи делать?
@j1su174
@j1su174 11 ай бұрын
Большое спасибо за разбор, стало намного проще и в целом понятней, как решать такие задачи, но вот у меня попалась такая вариация задачи, когда не "нельзя повторять ход, который сделал второй игрок", а "нельзя повторять ход, который этот же игрок делал на предыдущем ходу". Всё пытался догадаться, как изменить код в таком случае, но так и не додумался. Сможете, пожалуйста, помочь?
@kreaasociopances6057
@kreaasociopances6057 11 ай бұрын
Догадался?
@j1su174
@j1su174 11 ай бұрын
@@kreaasociopances6057, Неа, так и не вышло
@homegame8787
@homegame8787 11 ай бұрын
В заданиях с двумя кучами пишет что a не определено. и ошибку выдает в строке a,b=h. Что делать??
@Q_1_2_m
@Q_1_2_m Жыл бұрын
Можете помочь, у меня достигается максимум рекурсии, хотя кэширование я сделал. Что делать в таком случае?
@yummy7030
@yummy7030 11 ай бұрын
день до егэ) хыхыхы
@stafrhd
@stafrhd 2 ай бұрын
Ну лучший. Прям спас.
@-fagi-5207
@-fagi-5207 Жыл бұрын
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит одна куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может а) убрать из кучи половину камней, если количество камней в куче делится на 2; иначе убрать из кучи два камня; б) убрать из кучи две трети камней, если количество камней в куче делится на 3; иначе убрать из кучи три камня. Например, пусть в куче 10 камней, тогда можно убрать половину или только три камня. А если в куче 12 камней, то можно убрать половину или две трети камней. Игра завершается в тот момент, когда в куче останется ровно 1 камень. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, в которой будет ровно 1 камень. В начальный момент в куче было S камней, 1 ≤ S ≤ 37.
@pusna5478
@pusna5478 11 ай бұрын
при поиске максимального S выдает на единицу меньше ответа. Можете подсказать?
@user-mn8yf8rg8o
@user-mn8yf8rg8o Жыл бұрын
я не понимаю суть функции game, как она работает. Если какой нибудь первый ход окажется выигрышным то выходит P1. А если все ходы выводят P1 то возвращается В1, это не понятно, почему при всех ходах когда петя выигрывает 1ым ходом у вани выигрышный? кажется я запутался, я чтото не так понял
@inf99ballov
@inf99ballov Жыл бұрын
Удобнее для понимания нарисовать дерево ходов, а я пока что объясню на словах: Петя по условию ходит всегда первый, значит если у него есть ХОТЯ БЫ ОДИН ход приводящий его к победе - то он и победит. Но такая конструкция не работает для Вани - ведь он ходит после Пети - поэтому чтобы доказать что выигрывает Ваня необходимо рассмотреть ВСЕ ходы Пети и при каждом доказать что Ваня побеждает. Что же касается P1 - это выигрышная стратегия - то есть та из которой можно выиграть и раз Все ходы ведут в такие позиции - значит из всех них будет побеждать мой оппонент - а значит я сам нахожусь в проигрышной
@mr.mahlov4245
@mr.mahlov4245 11 ай бұрын
а что делать коогда в условии на две кучи камней в обоих неизвестное значение?
@user-gm1lo7ce3t
@user-gm1lo7ce3t 8 ай бұрын
спасибо большое
@user-xs3ih5ex9q
@user-xs3ih5ex9q 3 ай бұрын
Почему в задаче на две кучи 19 номер не считает? (не выдает никакой ответ,
@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 получается не правильным (но я решил).
@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 11 ай бұрын
Ты ещё на ассемблере черепашку пропиши
@matikkyt3710
@matikkyt3710 11 ай бұрын
кумир в помощь
@k_o_l_d_iplay9360
@k_o_l_d_iplay9360 11 ай бұрын
@@matikkyt3710 👌
@muzekass5829
@muzekass5829 11 ай бұрын
Попалось задание на решу егэ с одной кучей и возможные ходы - добавить 1 камень или увеличить в 6 раз их количество. Победа получается, когда камней больше 361 Если для s брать начальное значение меньше 112 то прога ошибку выдает, а если брать значения выше - ответа просто нет Номер на решу егэ: 28142 Условие: Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один камень или увеличить количество камней в куче в шесть раз. Например, имея кучу из 10 камней, за один ход можно получить кучу из 11 или 60 камней. У каждого игрока, чтобы делать ходы, есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче превышает 361. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 362 или больше камней. В начальный момент в куче было S камней, 1 ≤ S ≤ 360. Говорят, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока  - значит, описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника. Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, когда такая ситуация возможна.
@muzekass5829
@muzekass5829 11 ай бұрын
Нашел решение Нужно добавить: from sys import setrecursionlimit setrecursionlimit(2000)
@user-rl7kg1id6p
@user-rl7kg1id6p 7 ай бұрын
помогите пожалуйста, я решаю вашим способом, в целом всё ок, я всё понимаю, но попалась задача с условием "так же за всю игру можно только один раз сделать суперход - ход, после которого количество камней в куче не изменится, а очередь хода перейдёт к сопернику, т.е. суперход может сделать один раз либо Ваня, либо Петя". я не понимаю, как это прописать в коде
@elenamakarova1153
@elenamakarova1153 Жыл бұрын
а почему при более больших числах (200+) в стандартных задачах на одну кучу ничего не работает и можно ли это как-то решить ?
@mrvalary2
@mrvalary2 Жыл бұрын
Начинай перебор с больших чисел. Например у тебя победа с 350, тогда начни с 100
@mor9626
@mor9626 11 ай бұрын
достаточно добавить from sys import setrecursionlimit setrecursionlimit(2000)
@Bogdashka
@Bogdashka Жыл бұрын
А все прототипы можно ли решить через эксель? Скажите, пожалуйста
@inf99ballov
@inf99ballov Жыл бұрын
Ну скорее всего можно, но в некоторых случаях очень "неприятно"
@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 понял, спасибо большое, что объяснил)
@user-ei2zm5zy8r
@user-ei2zm5zy8r Жыл бұрын
👍 СЮДАААААА {под видео} 🦆
@loka8001
@loka8001 Жыл бұрын
Я немного не понял насчет "if h>60: return 'P1'" разве не B1 должно быть? если именно оппонент выигрывает или P2 а не P1?
@loka8001
@loka8001 Жыл бұрын
Если кто нибудь понял может пояснить поподробнее?
@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) и что нужно найти дословно Потому что код написан верно
@sosun4lena453
@sosun4lena453 Жыл бұрын
вот есть будет другая задача на ЕГЭ, как перекрутить у себя всю эту логику в голове? это же не реально
@DZ-vq8db
@DZ-vq8db Жыл бұрын
Есть же, если ты не пень же, получиться же. А иначе же нафиг ты такой в унике нужен
@dizla1k157
@dizla1k157 Ай бұрын
Так а что сложного? Код немного меняешь и все либо руками
@popugajara
@popugajara 2 ай бұрын
код абсолютно не работает на некоторых задачах.
@marriiap
@marriiap 5 ай бұрын
а что делать если на код с 2 кучами выдает, что "a, b = h TypeError: cannot unpack non-iterable int object"
@inf99ballov
@inf99ballov 5 ай бұрын
ошибка в шаблоне, скорее всего забыла в основном цикле под функцией передавать h как 2 числа, поэтому и распаковать обратно он не может
@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
@user-iw4xj4mn1t
@user-iw4xj4mn1t 11 ай бұрын
P1 и B1 очень путают понимание рекурсии, надо было по другому обозвать
@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 ну может он для тебя и стандартный, на самом деле решай так как тебе удобно, только попробуй решить все задачи из видео через свой код - если получится без проблем, то юзай его раз он тебе понятней
@bo3duxah
@bo3duxah Жыл бұрын
Разве в первой задаче ответ не 7? Петя выбирает h*2 и получает 14 камней, потом Ваня выбирает h*2 и получает 28 камней >=25, то есть выигрывает. Или я что-то не понимаю?
@inf99ballov
@inf99ballov Жыл бұрын
В задаче написано при ЛЮБОЙ ИГРЕ ПЕТИ а значит что ваня должен выиграть при обоих его ходах а не только при умножении на два
@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 11 ай бұрын
@@inf99ballov по условию s > 20. но в коде в цикле for ты перебираешь от 20 включительно. я проверил: на ответ это не повлияло, но исправь всё же, пожалуйста
@ffiulopy2.0
@ffiulopy2.0 Жыл бұрын
На ЕГЭ могут попасться только камни или ещё что-то?
@inf99ballov
@inf99ballov Жыл бұрын
может быть что угодно, но из года в год только камни дают или что-то на них похожее
@Frensski
@Frensski 6 ай бұрын
сколько баллов дает эти 3 задания в сумме??
@user-xl9mv1nv2w
@user-xl9mv1nv2w 5 ай бұрын
3
@Stusl1k
@Stusl1k 2 ай бұрын
голос на пятёрку похож)
@artemvolkov2550
@artemvolkov2550 2 ай бұрын
имба
@ZXC_BEBRA69
@ZXC_BEBRA69 4 ай бұрын
а теория игр только на камни существует?
@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), но в целом код рабочий!
@surikatio
@surikatio Жыл бұрын
У меня задача аналогична первой, но всего лишь отличаются ходы и количество камней в куче, требуемое для выигрыша, код для задачи из видео работает, но для моей выдает макс глубину рекурсии... Изменено: проблема в том , что второй ход сначала умножает на 4, а затем вычитает из кучи 3 камня, но я все равно не пойму где рекурсия не может остановиться...
@surikatio
@surikatio Жыл бұрын
итак, проблему решил тем, что начал перебирать цикл не с 1, а с 2(просто другие решения данной проблемы выдают ошибку)
@rai_bon8117
@rai_bon8117 4 ай бұрын
Так и не понял, что такое P1, P2, B1, B2?
@varvarapro7839
@varvarapro7839 Жыл бұрын
🦆
@haemi6899
@haemi6899 11 ай бұрын
какие 3 месяца. осталось 13 часов😋
@hash1r1ya
@hash1r1ya 11 ай бұрын
понимаю
@itchyyy1529
@itchyyy1529 5 ай бұрын
код перестает работать при большом количестве камней
@anus8346
@anus8346 4 ай бұрын
import sys sys.setrecursionlimit(2500) # увеличивай значение, пока ошибка не пропадет это исправит проблему с глубиной рекурсии
@pslups9086
@pslups9086 Жыл бұрын
метод алексея кабанова короче и красивей будет
@inf99ballov
@inf99ballov Жыл бұрын
Согласен, на мой взгляд, этот просто по-понятнее, ну а вы выбирайте сами)
@alextarr430
@alextarr430 Жыл бұрын
код некорректно работает при других числах
@inf99ballov
@inf99ballov Жыл бұрын
Код как раз работает корректно, возможно ты просто ошибся, скинь задачу и свое решение я посмотрю
@alextarr430
@alextarr430 Жыл бұрын
@@inf99ballov я пробовал его на двух разных задачах и в обоих случаях он выдавал слишком большое число (19 задача), а при слишком маленьком значении (собственно говоря, правильном ответе) в результате было None. Из-за чего это может быть?
@inf99ballov
@inf99ballov Жыл бұрын
@@alextarr430 Ошибка могла быть где угодно, может быть ты all на any не менял потому что как правило в 19 задачи нужен неудачных ход пети. Но ответить точно смогу только если взгляну на пример
@alextarr430
@alextarr430 Жыл бұрын
@@inf99ballov мои комментарии с задачей и кодом почему-то удаляются сами по себе после отправления(( Могу я скинуть на почту или еще куда-то?
@inf99ballov
@inf99ballov Жыл бұрын
@@alextarr430 по ссылке в описании есть телеграм канал, можешь в комменты просто скинь куда-нибудь под постом
@user-yw1yr2xi1l
@user-yw1yr2xi1l 26 күн бұрын
я ору чаечкой с названий файлов
@Reilinsger
@Reilinsger 3 ай бұрын
Теория подставы...
@Chouseeeeeeee
@Chouseeeeeeee 6 ай бұрын
😂ты на того типа из волчонка похож
@begidurak
@begidurak Жыл бұрын
А как все это запомнить ахаха
@inf99ballov
@inf99ballov Жыл бұрын
практика и практика))
@hersgoryydamn6416
@hersgoryydamn6416 18 күн бұрын
код не рабочий )
@kubsupreme1629
@kubsupreme1629 13 сағат бұрын
Всмысле?
@ayezxc
@ayezxc 28 күн бұрын
ты сигма
@user-hk6dx2ju6x
@user-hk6dx2ju6x 4 ай бұрын
Программа работает не так, как на видео. Она неправильная
@inf99ballov
@inf99ballov 4 ай бұрын
как же она тогда выдает правильные ответы?
@dima_5145
@dima_5145 3 ай бұрын
у тебя голос как у пятёрки...
@dyingangell3340
@dyingangell3340 Жыл бұрын
бл я один нечего не понимаю?
@Stayfashan_P
@Stayfashan_P Жыл бұрын
брух
@user-xs3ih5ex9q
@user-xs3ih5ex9q 3 ай бұрын
Почему в задаче на две кучи 19 номер не считает? (не выдает никакой ответ,
Тотальный разбор ДОСРОКА 2024 ЕГЭ по информатике на 100 баллов
1:31:13
ИНФОРМАТИКА ЕГЭ 2024 99 БАЛЛОВ
Рет қаралды 13 М.
Can You Draw The PERFECT Circle?
00:57
Stokes Twins
Рет қаралды 96 МЛН
Did you find it?! 🤔✨✍️ #funnyart
00:11
Artistomg
Рет қаралды 122 МЛН
Can you beat this impossible game?
00:13
LOL
Рет қаралды 40 МЛН
ШАБЛОНЫ КОДОВ на PYTHON для ЕГЭ по ИНФОРМАТИКЕ 2024
52:23
ИНФОРМАТИКА ЕГЭ 2024 99 БАЛЛОВ
Рет қаралды 29 М.
❗️СРОЧНО - ЕГЭ ИЗМЕНИЛИ
2:26
Информатика с Сеней
Рет қаралды 2,1 М.
Релакс-стрим. Смотрим финал ЛЧ Реал Мадрид -- Боруссия Дортмунд и болтаем
Белов и Кочка | Олимпиадная математика | Школково
Рет қаралды 54
Все типы задания № 9 | Информатика ЕГЭ
53:29
Информатика ЕГЭ Умскул
Рет қаралды 13 М.
LAB7
3:23
Josegerson Miko Nve Mangue
Рет қаралды 3