спасибо большое, залутал свои баллы и поступил, куда хотел благодаря вам
@user-zi8lj4bv8y28 күн бұрын
красава)
@slammmedd2 ай бұрын
практически ни черта не понял. то ли я тупой, то ли задача мудрёное недоразумение
@user-zi8lj4bv8y2 ай бұрын
попробуй посмотреть другое объяснение🤔 их много на ютубе
@littlefrogg-ee4ve3 ай бұрын
Завтра егэ по инфе. Ваш видос спасает, спасибо, теперь знаю как решать🥺❤️ долго пыталась понять, думала код наизусть выучить, а благодаря вам ПОНЯЛА
@user-zi8lj4bv8y2 ай бұрын
супер)
@wixight3 ай бұрын
Шикарное объяснение, но как быть, если последний игрок, сделавший ход проигрывает?
@user-zi8lj4bv8y3 ай бұрын
Все просто, не стоит за день до егэ забивать голову сомнительными формулировками, я бы так посоветовал поступить)
@blacksheep25343 ай бұрын
я не совсем разобрался зачем он возвращает n ==2(я понимаю ,что это проверка ,но зачем возвращает непонятно) .Код работает на 10/10 и ускоряет решение заданий раза в два
@amigo99873 ай бұрын
thx
@yoru_umi3 ай бұрын
спасибо большое за разбор! за день до егэ наконец то поняла как решать
@climberg3 ай бұрын
немного сложновато, но попробую закрепить на практике! спасибо за такое подробное объяснение, хоть и через 4 дня экзамен, но лучше поздно, чем никогда
@user-zi8lj4bv8y3 ай бұрын
удачи!
@climberg3 ай бұрын
@@user-zi8lj4bv8y спасибо!!!
@polerren5903 ай бұрын
Дмитрий , у вас талант , редко пишу комментарии , но вам как ни кому другому не жалко , если я решу это задание , то только благодаря вам , большое вам спасибо
@user-zi8lj4bv8y3 ай бұрын
ого, спасибо, приятно) я думаю, нет повода не решить. Главное в неудачном ходе не забыть сделать any
@igelsch_di4 ай бұрын
Господи, ну наконец хоть немного у меня жетончик провалился😂 Для меня до этого теория игр казалась вообще темным лесом..
@user-zi8lj4bv8y4 ай бұрын
у тебя еще много времени, чтобы все это закрепить и забрать три балла😎
@user-zi8lj4bv8y4 ай бұрын
t.me/+w7QoKUXpSh9lZTky - телеграмм канал с полезной информацией и подготовкой к ЕГЭ там буду разбирать некоторые задания с ДАЛЬНЕГО ВОСТОКА в дни экзамена 🔥🔥🔥
@nxzdix4 ай бұрын
здравствуйте, в 2024 году для сдачи егэ этот способен ещё актуален?
@user-zi8lj4bv8y4 ай бұрын
привет, да, конечно, это для стандартной теории игр
@кабан-ф4ц4 ай бұрын
а вот такой вопрос, а если ходы не должны повторяться как адаптировать программу
@user-zi8lj4bv8y4 ай бұрын
проще всего через добавление дополнительного параметра, который будет отвечать за сделанные ходы и потом на основании этого параметра, ты будешь понимать какой ход сделал противник или ты сам ранее
@кабан-ф4ц5 ай бұрын
во, вот это я понимаю подход.Все просто , понятно.До этого смотрел других ребят, ни у одного код не понимал.Уже хотел просто зазубрить и все, но все же я пытался все таки научиться понимать , а не тупо заучить.И вот я наткнулся на ваше замечательное видио.Спасибо вам огромное! С первого раза код понял.
@user-zi8lj4bv8y5 ай бұрын
круто, рад, что разобрался! тогда 3ех баллов тебе на экзамене в этой задаче)
@Rigel_255 ай бұрын
Спасибо тебе, добрый человек. Посмотрел видео сразу понял как решать. До этого смотрел решение через другой огромный сложный код, и поэтому думал, что питоном решать сложно
@Crazy_D0c5 ай бұрын
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 # 🙃
@user-zi8lj4bv8y5 ай бұрын
привет, а ты n > 2 забыл поменять на n > 4/ У тебя Ваня не успевает второй раз походить тогда 12 будет)
@Crazy_D0c5 ай бұрын
@@user-zi8lj4bv8y Да, 4 верный вариант. А как вы на 14:06 советуете и зачем? Вы же про двойку говорите, но этот ход нас не интересует. Объясните, пожалуйста.
@user-zi8lj4bv8y5 ай бұрын
@@Crazy_D0c cмотри, это уже финальная проверка для исключения лишний позиции. Тебе по заданию говорят в №21 - Ваня не должен гарантированно выйграть первым ходом. когда ты пишешь n > 4, ты находишь ответы, а n > 2 ты уже делаешь проверку и исключаешь эту лишнюю позицию.
@user-zi8lj4bv8y5 ай бұрын
@@Crazy_D0c а просто может быть такое, что тебя попросят по заданию выбрать максимальное , и при n > 4 на экране появились числа: 12 13 14 Человек не думая может выбрать число 14, но оно лишнее т.к. Ваня гарантировано при 14 выигрывал первым ходом. Вот чтобы его исключить, понимать. какое именно число, то лучше сделать проверку при n > 2
@Crazy_D0c5 ай бұрын
@@user-zi8lj4bv8y Благодарю!
@thezont70456 ай бұрын
Можете объяснить почему на 12:36 мы пишем if a>=29 or n>2: ведь по сути первый ход пети(n=0 и к концу n=1), дальше вани(n=1 и к концу n=2). Я не понимаю почему мы пишем n>2, если это по сути начало второго хода Пети.
@user-zi8lj4bv8y6 ай бұрын
n - номер сделанного только что хода, n > 2 - это грубо говоря, мы позволяем Пете походить второй раз(n = 3) и определяем такой ход как лишний
@user-zi8lj4bv8y6 ай бұрын
@@thezont7045 да, это список ходов, в этом списке будет набор результатов, с которыми работаем функциями all(), any()
@valera75227 ай бұрын
задание номер 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. подскажите, пожалуйста, что не так :/
@user-zi8lj4bv8y7 ай бұрын
привет, там доп условие есть -При этом нельзя повторять ход, который только что сделал второй игрок
@valera75227 ай бұрын
@@user-zi8lj4bv8y нда. привык уже типичные задачи нарешивать, не вчитываюсь. как это условие грамотно вписать в ваш код?
@user-zi8lj4bv8y7 ай бұрын
@@valera7522 надо дополнительный аргумент завести, по которому можно будет определять ранее сделанные ходы и соответствующим образом реагировать. А далее уже формировать список допустимых ходов проверкой условий. В тг я побыстрее отвечаю, если что, там есть чат для вопросов или на основном под любым постом
@valera75227 ай бұрын
задание номер 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)
@user-zi8lj4bv8y7 ай бұрын
Валера, привет, все правильно, ты нашел позиции, из которых можно выиграть первым или вторым ходом, НО при этом туда попали позиции, из которых выигрывают ТОЛЬКО первым ходом. Их нужно исключить, как я показывал в видео. Просто в программе поменяй 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)
@valera75227 ай бұрын
@@user-zi8lj4bv8y спасибо, понял :) можете ещё подсказать, что означает условие "Петя может выбирать, каким ходом выиграет Ваня"?
@user-zi8lj4bv8y7 ай бұрын
@@valera7522 понятия не имею 😅 вероятно, имеется ввиду, что есть такие позиции, где Петя может специально поддаться и сделать так, что Ваня победит. Типа специальный неудачный ход
@mezumidumpling9 ай бұрын
Следую инструкции на 10:04. Задание: найдите минимальное значение S, при котором Ваня выигрывает своим первым ходом при любой игре Пети. Вижу, что нужно найти минимальное значение. Значит, у противника будет any. Решаю таким способом, ответ неверный. А если я оставляю у противника all, ответ - верный. Почему так?
@user-zi8lj4bv8y9 ай бұрын
Ты права, но у тебя в условии есть важное дополнение, найти минимальное значение S, при ЛЮБОЙ игре Пети(на все его ходы), т.е. твой противник умный - значит all Если бы в условии просто сказали, найди минимальное значение S, когда можно выиграть, без дополнительных слов (при любом ходе противника, независимо от хода противника, имеем выигрышную стратегию), то any
@tayagamer30059 ай бұрын
А если задание такое: найдите минимальное и максимальное значения S, при которых Ваня выигрывает своим первым или вторым ходом, *при этом для любого значения у Вани есть возможность выиграть своим первым ходом (в случае ошибки Пети)?* Я не могу понять, как записать жирную часть условия.
@user-zi8lj4bv8y9 ай бұрын
я бы это двумя запусками решал. Нашел сперва ответ на вопрос, при каких S Ваня выигрывает 1 или 2 ходом. Далее нашел бы S, при котором Ваня выйграет первым ходом в случае неудачного хода Пети И после посмотрел бы, где они пересекаются Например, если на первый вопрос ответы будут - 16, 17, 18, 19, 20 А на второй : 17, 18. 19, 21, 22, 23,24 То минимум и максимум, который есть в двух наборах - это 17 и 19
@NastushaAir9 ай бұрын
Спасибо большое, очень помогли 🙏💕
@NastushaAir9 ай бұрын
Спасибо большое, очень помогли 🙏💕
@user-zi8lj4bv8y9 ай бұрын
круто, рад, что помогло) есть еще бесплатные занятия, если будет актуально, то посмотри в тг
@mezumidumpling9 ай бұрын
А если условие, что кто-то проиграл? Тот, кто первый набрал >=32 камней, проиграл. Тогда данный код не подходит?
@user-zi8lj4bv8y9 ай бұрын
привет, подходит, там совсем немного условие нужно будет изменить. Если не получится - напиши, помогу
@mezumidumpling9 ай бұрын
@@user-zi8lj4bv8y поправочка: там s>=33. Так вот, я изменяла вторую строчку кода, делала *if a<33 or n>(от условия зависит)* Ну, по логике, теперь просто тот, у кого в куче будет *меньше* 33 камней, победит. Не получилось, код ничего не выдал. Условие такое: Петя первый, Ваня второй. Одна куча, s камней, 1<=s<=32. Действие А - добавить 1 камень в кучу, действие Б - утроить кол-во камней, а затем вычесть 1 камень. Игрок, первый получивший кучу s>=33, проигрывает. Вот взять хотя бы самый первый вопрос: при каких значениях s Петя гарантированно выигрывает в один ход после 1-го хода Вани?Можете подсказать, как правильно написать код?
@user-zi8lj4bv8y9 ай бұрын
@@mezumidumpling, смотри, получается принцип такой же, твоя задача понять, когда в игре кто-то набирает >= 33, то есть условие if s >= 33 не меняется, только теперь тебе важно, чтобы это происходило не во время хода игрока, который должен победить, а его противника. Например, мы также проверим if s >= 33 or n > 2: return n == 2 (проверяем, что это Ваня перебрал, тогда Петя выйграл) далее как всегда, ходы и тд if n % 2 == 1: return all(...) return any(...)
@user-zi8lj4bv8y9 ай бұрын
@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)
@mezumidumpling9 ай бұрын
@@user-zi8lj4bv8y огромное спасибо, с первым вопросом всё получилось, ответ правильный. Но на остальных вопросах не работает, хотя пользуюсь тем же принципом :D Допустим, "Вася гарантированно выигрывает в один ход после 2 хода Пети". То есть всего 4 хода, П-В-П-В. На 4-ом Вася выигрывает; для этого мы проверяем, что Петя набрал s>=33 на 3-ьем ходе. If a>=33 or n>3: return n==3 if n%2==0: return all(..) return any(..) Логика *та же,* но программа не работает :/
@ЫбаЫгы Жыл бұрын
чел харош, думал, что не сдам ЕГЭ, но теперь буду поступать в МГУ, спасибо за видео!!!!!!!😎😎😎😎😎😎
@free_life56 Жыл бұрын
Согл полн
@user-zi8lj4bv8y Жыл бұрын
красава, чел!
@максимадаменко-ш3г Жыл бұрын
спасибо большое это самый крутой способ
@user-zi8lj4bv8y Жыл бұрын
спасибо) удачи на экзамене!
@Рустам-м6й4д Жыл бұрын
Надеюсь на самом егэ таких задач не будет
@user-zi8lj4bv8y Жыл бұрын
Думаю не будет
@максимадаменко-ш3г Жыл бұрын
До ЕГЭ два дня я наконец-то понял как решать эту задачу, спасибо
@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)]) вроде всё также,но ничего не выдаёт,в чём ошибка?
@user-zi8lj4bv8y Жыл бұрын
Добрый день, а у вас что-то с ходами в 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)
@ВладимирАфанасьев-ч8ъ Жыл бұрын
Хороший канал, жалко что забросили(
@user-zi8lj4bv8y Жыл бұрын
загруженный год получился
@varvarapro7839 Жыл бұрын
9:14 помогите я не могу понять вот это, когда any, a когда all.... Не могу понять 10000 раз пересмотрела этот момент
@user-zi8lj4bv8y Жыл бұрын
Привет! А здесь прям подробно это и не объяснялось, видео как краткая методичка. Ты можешь просто запомнить, что в 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 Жыл бұрын
@@user-zi8lj4bv8y спасибо большое, вроде поняла)) Нужно только закрепить нарешиванием этих задач
@user-zi8lj4bv8y Жыл бұрын
@@varvarapro7839 да, т.к. они с высокой вероятностью останутся шаблонными
@felixmarlboro7808 Жыл бұрын
9:13 14:30
@user-zi8lj4bv8y Жыл бұрын
мм?
@felixmarlboro7808 Жыл бұрын
@@user-zi8lj4bv8y для себя отметил
@user-zi8lj4bv8y Жыл бұрын
@@felixmarlboro7808 а, читер! Успехов на экзамене)
@felixmarlboro7808 Жыл бұрын
@@user-zi8lj4bv8y спасибо большое
@МаксимДураксим Жыл бұрын
Второе как раз четное число 5:15
@lovxxs Жыл бұрын
а с возведением в квадрат как работать? я пишу a * a или a ** 2, и программа не работает
@user-zi8lj4bv8y Жыл бұрын
должно работать, скиньте в тг программу, в другом проблема думаю
@lovxxs Жыл бұрын
@@user-zi8lj4bv8y а тг такое же, как и в описании?
@user-zi8lj4bv8y Жыл бұрын
@@lovxxs да, либо на канале с задачами t.me/harnish_inf_ege под любым постом напишите условие, я отвечу сегодня
@user-zi8lj4bv8y Жыл бұрын
t.me/harnish_inf_ege тг канал с ежедневной практикой, задачи + программирование и теория
@user-zi8lj4bv8y Жыл бұрын
t.me/harnish_inf_ege тг канал с ежедневной практикой, задачи + программирование и теория
@vihapp4634 Жыл бұрын
Здравствуйте встретила такое условие, что камней больше 10. s>10 Т.е лимит мы не знаем как тогда быть? В начальный момент в первой куче было 18 камней, во второй куче - S камней, S > 12.
@user-zi8lj4bv8y Жыл бұрын
Здравствуйте! Давайте разберемся, сможете в телеграмме скинуть скрин задания?
@vihapp4634 Жыл бұрын
@@user-zi8lj4bv8y Конечно! Можно ваш тг?
@user-zi8lj4bv8y Жыл бұрын
@@vihapp4634 @pda028
@user-zi8lj4bv8y Жыл бұрын
Разобрались, в ближайшие дни открою текстовый канал на дискорд сервере, задавайте вопросы туда
@vihapp4634 Жыл бұрын
Здравствуйте ещё раз! Встретила задания про цепочки Укажите, у кого есть выигрышная стратегия при исходном наборе слов {АБВГДАБВГДХ, ДГВБАДГВБА}. Если у нас не цифры, а буквы(цепочки) как решать в такое случае, могли бы помочь?
@dimadyadkin8002 Жыл бұрын
У вас потрясающе получается объяснять материал, спасибо!
@user-zi8lj4bv8y Жыл бұрын
Спасибо! Приятно слышать
@barbaredoriental5609 Жыл бұрын
где же вы?
@user-zi8lj4bv8y Жыл бұрын
временно отсутствовал) с января - февраля продолжим
@barbaredoriental5609 Жыл бұрын
@@user-zi8lj4bv8y временное отсутствие длительностью ~год скажется на просматриваемости :) придется заново собирать аудиторию... но я буду ждать!
@user-zi8lj4bv8y Жыл бұрын
@@barbaredoriental5609 а у меня ее и так за тот год почти не было) активизируюсь
@BSJow Жыл бұрын
Почему мы проверяем то, что плохой ход сделал именно противник? Как это работает? Разве тот, кто должен выиграть, не может сделать плохой ход?
@ОльгаТапкова2 жыл бұрын
Это лучшее видео, сколько у других разбирала, но это супер, кратко, талантливо и красиво
@user-zi8lj4bv8y2 жыл бұрын
спасибо!
@АртёмУдальцов-г6л2 жыл бұрын
Подскажите, пожалуйста, что делать, когда просят перевести N в 2-ую ссч и перевернуть, удалив, в начале, незначащие нули?
@user-zi8lj4bv8y2 жыл бұрын
Больше дополнительных условий нет? r = int(f”{n:b}”[::-1],2)
@lewnd2 жыл бұрын
не понял только когда использовать any а когда использовать all?
@user-zi8lj4bv8y2 жыл бұрын
почти всегда будет так if ... return all([...]) return any ([...]) когда был неудачных ход, то везде any