Спасти принцесс
От: nikholas Россия  
Дата: 13.03.19 09:32
Оценка:
Злобный Дракон поймал двух принцесс, Читу и Ниту, и посадил их в разные башни
своего замка. Затем Злобный Дракон подбросил правильную монетку бесконечное число раз.
Все результаты чётных бросков он сообщил Чите, а все результаты нечётных — Ните.
Далее Дракон предлагает каждой из принцесс назвать номер
любого подбрасывания, результат которого ей не известен.
То есть Чита должна назвать нечётный номер, а Нита — чётный.

Если результаты бросков, названных Читой и Нитой, одинаковые, то Злобный Дракон
дарит каждой принцессе тортик, розового плюшевого зайца и отпускает на свободу.
Если же результаты бросков отличаются, то Злобный Дракон съедает Читу и Ниту
с клюквенным вареньем. Дракон обожает принцесс и клюквенное варенье!

Принцессы знают о повадках Злобного Дракона и могли заранее до похищения договориться
о стратегиях. Как им следует себя вести и чему равна вероятность спасения?
Re: Спасти принцесс
От: Буравчик Россия  
Дата: 13.03.19 10:24
Оценка:
Здравствуйте, nikholas, Вы писали:

N>Злобный Дракон поймал двух принцесс, Читу и Ниту, и посадил их в разные башни

N>своего замка. Затем Злобный Дракон подбросил правильную монетку бесконечное число раз.
N>Все результаты чётных бросков он сообщил Чите, а все результаты нечётных — Ните.
N>Далее Дракон предлагает каждой из принцесс назвать номер
N>любого подбрасывания, результат которого ей не известен.
N>То есть Чита должна назвать нечётный номер, а Нита — чётный.

N>Если результаты бросков, названных Читой и Нитой, одинаковые, то Злобный Дракон

N>дарит каждой принцессе тортик, розового плюшевого зайца и отпускает на свободу.
N>Если же результаты бросков отличаются, то Злобный Дракон съедает Читу и Ниту
N>с клюквенным вареньем. Дракон обожает принцесс и клюквенное варенье!

N>Принцессы знают о повадках Злобного Дракона и могли заранее до похищения договориться

N>о стратегиях. Как им следует себя вести и чему равна вероятность спасения?

Вероятность спасения 100%

Одна принцесса ищет в "своих" бросках последовательность 01. Озвучивает индекс единицы.
Вторая принцесса смотрит результат броска по этому индексу. Если "ее" бросок равен 1, то он озвучивает тот же индекс, если равен 0, то предыдущий.

Более точное описание:

Запишем результаты бросков следующим образом
Ч[0], Н[0], Ч[1], Н[1] ...

Ч — броски, о которых знает Чита. Н — броски, о которых знает Нита. Такая нумерация отличается от нумерации Дракона, но эти нумерации взаимозаменяемы.

Чита находит такое k, что ее последовательные броски Ч[k]=0 и Ч[k+1]=1. Чита озвучивает свое решение: k+1
Нита проверяет, чему равно Н[k+1].
Если Н[k+1]=1, то Нита озвучивает k+1. Принцессы спасаются т.к. Ч[k+1] = Н[k+1] = 1
Если Н[k+1]=0, то Нита озвучивает k. Принцессы спасаются т.к. Ч[k] = Н[k+1] = 0
Best regards, Буравчик
Отредактировано 13.03.2019 10:28 Буравчик . Предыдущая версия . Еще …
Отредактировано 13.03.2019 10:27 Буравчик . Предыдущая версия .
Отредактировано 13.03.2019 10:26 Буравчик . Предыдущая версия .
Re: Спасти принцесс
От: Слава  
Дата: 13.03.19 10:30
Оценка: +5 :))
Здравствуйте, nikholas, Вы писали:

N>Затем Злобный Дракон подбросил правильную монетку бесконечное число раз.


И так у них всё.
Re[2]: Спасти принцесс
От: nikholas Россия  
Дата: 13.03.19 10:42
Оценка: +1
Здравствуйте, Буравчик, Вы писали:

Б>Одна принцесса ищет в "своих" бросках последовательность 01. Озвучивает индекс единицы.

Б>Вторая принцесса смотрит результат броска по этому индексу. Если "ее" бросок равен 1, то он озвучивает тот же индекс, если равен 0, то предыдущий.

Они сидят в разных башнях и не слышат ответы друг друга
Re[3]: Спасти принцесс
От: Qulac Россия  
Дата: 13.03.19 11:13
Оценка:
Здравствуйте, nikholas, Вы писали:

N>Здравствуйте, Буравчик, Вы писали:


Б>>Одна принцесса ищет в "своих" бросках последовательность 01. Озвучивает индекс единицы.

Б>>Вторая принцесса смотрит результат броска по этому индексу. Если "ее" бросок равен 1, то он озвучивает тот же индекс, если равен 0, то предыдущий.

N>Они сидят в разных башнях и не слышат ответы друг друга


Я как понял, этот номер бесконечен, все дело в способе его выбора. Это так?
Программа – это мысли спрессованные в код
Re: Спасти принцесс
От: baily Россия  
Дата: 13.03.19 15:02
Оценка: +3
Здравствуйте, nikholas, Вы писали:


В условии нечетко сформулированы некоторые аспекты.

> Затем Злобный Дракон подбросил правильную монетку бесконечное число раз.


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

> Дракон предлагает каждой из принцесс назвать номер любого подбрасывания, результат которого ей не известен.


Эту фразу, опять же, можно понять по разному. Чуть ниже в топике вы уточнили, что Чита и Гита дают ответы независимо друг от друга и не имеют никакой дополнительной информации.

С учетом таких замечаний совершенно ясно, что Чита и Гита могут называть какие угодно разрешенные им индексы.
Вероятность спастись от этого не изменится и составит 1/2.
Re: Спасти принцесс
От: Qulac Россия  
Дата: 13.03.19 15:51
Оценка: :)
Здравствуйте, nikholas, Вы писали:

N>Злобный Дракон поймал двух принцесс, Читу и Ниту, и посадил их в разные башни

N>своего замка. Затем Злобный Дракон подбросил правильную монетку бесконечное число раз.
N>Все результаты чётных бросков он сообщил Чите, а все результаты нечётных — Ните.
N>Далее Дракон предлагает каждой из принцесс назвать номер
N>любого подбрасывания, результат которого ей не известен.
N>То есть Чита должна назвать нечётный номер, а Нита — чётный.

N>Если результаты бросков, названных Читой и Нитой, одинаковые, то Злобный Дракон

N>дарит каждой принцессе тортик, розового плюшевого зайца и отпускает на свободу.
N>Если же результаты бросков отличаются, то Злобный Дракон съедает Читу и Ниту
N>с клюквенным вареньем. Дракон обожает принцесс и клюквенное варенье!

N>Принцессы знают о повадках Злобного Дракона и могли заранее до похищения договориться

N>о стратегиях. Как им следует себя вести и чему равна вероятность спасения?

Принцесса находит в рассказе дракона бесконечную последовательность, где все четные или не четные(зависит от принцессы) "орлы" и говорит дракону четный или не четный(опять зависит от принцессы) индекс из этой последовательности.
Программа – это мысли спрессованные в код
Re: Спасти принцесс
От: Khimik  
Дата: 20.03.19 06:26
Оценка:
Здравствуйте, nikholas, Вы писали:

N>Злобный Дракон поймал двух принцесс, Читу и Ниту, и посадил их в разные башни

N>своего замка. Затем Злобный Дракон подбросил правильную монетку бесконечное число раз.
N>Все результаты чётных бросков он сообщил Чите, а все результаты нечётных — Ните.
N>Далее Дракон предлагает каждой из принцесс назвать номер
N>любого подбрасывания, результат которого ей не известен.
N>То есть Чита должна назвать нечётный номер, а Нита — чётный.

N>Если результаты бросков, названных Читой и Нитой, одинаковые, то Злобный Дракон

N>дарит каждой принцессе тортик, розового плюшевого зайца и отпускает на свободу.
N>Если же результаты бросков отличаются, то Злобный Дракон съедает Читу и Ниту
N>с клюквенным вареньем. Дракон обожает принцесс и клюквенное варенье!

N>Принцессы знают о повадках Злобного Дракона и могли заранее до похищения договориться

N>о стратегиях. Как им следует себя вести и чему равна вероятность спасения?

Я наверно не понял задачу.
Чита говорит любой нечётный номер, где выпал орёл (она же знает результаты всех нечётных номеров). Нита аналогично говорит любой чётный номер, где тоже выпал орёл. И?
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Re: Спасти принцесс
От: % Австралия жж
Дата: 20.03.19 07:23
Оценка:
Здравствуйте, nikholas, Вы писали:

Если первой отвечает Чита, она называет такой нечетный индекс N, что
последовательность
четный 0
нечетный ?
четный 1.
Нита знает значение по нечетному индексу, и называет N-1 или N+1 в зависимости, 0 там или 1.

Так как Дракон "бесконечно" бросал монетку, возьмём вероятность существования последовательности 0,?,1 за единицу, т.е. спасутся 100%.
Re: Спасти принцесс
От: rm822 Россия  
Дата: 26.12.19 22:01
Оценка:
N>о стратегиях. Как им следует себя вести и чему равна вероятность спасения?
Чита выбирает такой х, что x*2 -орел, а х*4 — решка
Нита знает что лежит в х, и теперь знает что в x*2 -орел, а х*4 — решка
Re: Спасти принцесс
От: B0FEE664  
Дата: 10.01.20 17:53
Оценка:
Здравствуйте, nikholas, Вы писали:

N>Затем Злобный Дракон подбросил правильную монетку бесконечное число раз.

Из фактов о Чаке Норрисе: Чак Норрис досчитал до бесконечности. Дважды.

N>Как им следует себя вести

Перво-наперво надо объявить конкурс, что тот герой, что выкрадет у дракона правильную монету (вещь редкая цены немалой!), сможет по выбору жениться на одной из принцесс.
Если же герои не справятся (или если они уже замужем), тогда принцессам надо заранее самим подбросить какую-нибудь монету и какой стороной та упадёт, ту и использовать в дальнейшем. Потому как судьба.
Интуитивно понятно, что в случае поимки драконом обеим следует сделать одно и тоже. А именно: из результатов сообщённых драконом выбрать максимально длинную последовательность состоящую из одинаковых результатов совпадающих с тем, что им выпал, когда они сами подбрасывали монету. После этого взять позицию близкую к середине выбранной последовательности (там будет бесконечность плюс-минус 1) и назвать её.

N>и чему равна вероятность спасения?

0.9(9)
И каждый день — без права на ошибку...
Re: Спасти принцесс
От: Somescout  
Дата: 10.01.20 18:00
Оценка: +1
Здравствуйте, nikholas, Вы писали:

Я как-то не очень понял условие:

N>Все результаты чётных бросков он сообщил Чите, а все результаты нечётных — Ните.

...
N>Далее Дракон предлагает каждой из принцесс назвать номер
N>любого подбрасывания, результат которого ей не известен.
...
N>Если результаты бросков, названных Читой и Нитой, одинаковые

Как вообще при этих условиях результаты могут быть одиноковые? Ведь все броски, которые не знает Чита — не чётные, а все которые не знает Нита — чётные. То есть их ответы принадлежат непересекающимся множествам и по условию не могут совпасть.
ARI ARI ARI... Arrivederci!
Re: Спасти принцесс
От: rg45 СССР  
Дата: 14.01.20 21:35
Оценка:
Здравствуйте, nikholas, Вы писали:

N>Принцессы знают о повадках Злобного Дракона и могли заранее до похищения договориться

N>о стратегиях. Как им следует себя вести и чему равна вероятность спасения?

Чита находит и называет такой n для которого: f(n-1) — орел, f(n+1) — решка. Нита в свою очередь слышит названный Читой номер n и, если f(n) — орел, называет n-1, если же f(n) — решка, то называет n+1. При длине последовательности, стремящейся к бесконечности, вероятность существования решения стремится к единице.
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[2]: Спасти принцесс
От: Буравчик Россия  
Дата: 14.01.20 22:21
Оценка:
Здравствуйте, rg45, Вы писали:

R>Чита находит и называет такой n для которого: f(n-1) — орел, f(n+1) — решка. Нита в свою очередь слышит названный Читой номер n и, если f(n) — орел, называет n-1, если же f(n) — решка, то называет n+1. При длине последовательности, стремящейся к бесконечности, вероятность существования решения стремится к единице.


Принцессы не знаю ответы друг друга. Т.е. отвечают одновременно.
Best regards, Буравчик
Re[3]: Спасти принцесс
От: rg45 СССР  
Дата: 14.01.20 22:25
Оценка: +2
Здравствуйте, Буравчик, Вы писали:

Б>Принцессы не знаю ответы друг друга. Т.е. отвечают одновременно.


Да я догадывался, в общем-то. Это я к тому, что такие вещи неплохо бы как-то обозначать в условии.
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[3]: Спасти принцесс
От: Pyromancer  
Дата: 07.02.20 13:31
Оценка: +1 -1 :)
Здравствуйте, nikholas, Вы писали:

N>Здравствуйте, Буравчик, Вы писали:


Б>>Одна принцесса ищет в "своих" бросках последовательность 01. Озвучивает индекс единицы.

Б>>Вторая принцесса смотрит результат броска по этому индексу. Если "ее" бросок равен 1, то он озвучивает тот же индекс, если равен 0, то предыдущий.

N>Они сидят в разных башнях и не слышат ответы друг друга



Тогда на ум приходит только использование того, что маловероятно что монета всегда выпадет одной стороной.
Cтратегия будет "назови номер первой решки в своей последовательности" по прикидке на 3-4 бросках это даст ~70%.
Но на самом деле 0%, бесконечное количество бросков требует бесконечного времени, потому принцессы помрут до того как дадут ответ.
Re: Спасти принцесс
От: Erop Россия  
Дата: 04.03.20 12:03
Оценка:
Здравствуйте, nikholas, Вы писали:

N>Принцессы знают о повадках Злобного Дракона и могли заранее до похищения договориться

N>о стратегиях. Как им следует себя вести и чему равна вероятность спасения?

А они что-то, кроме результатов бросков, которые им сообщают, знают? Ну, там, ответ другой принцессы, и т. п? Есть какое-то информационное взаимодействие между принцессами?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[2]: Спасти принцесс
От: watchmaker  
Дата: 04.03.20 13:46
Оценка:
Здравствуйте, Erop, Вы писали:


E>А они что-то, кроме результатов бросков, которые им сообщают, знают? Ну, там, ответ другой принцессы, и т. п? Есть какое-то информационное взаимодействие между принцессами?


Ну если они друг-другу информацию передают, то задача становится совсем простой и неинтересной.

Интересно — это когда каждой известна только своя независимая последовательность бросков, но тем не менее существуют стратегии с вероятностью спасения существенно выше 50%. Это прямо удивительно неожиданный факт
Re: Спасти принцесс
От: Erop Россия  
Дата: 04.03.20 17:02
Оценка: 6 (1)
Здравствуйте, nikholas, Вы писали:

N>Злобный Дракон поймал двух принцесс, Читу и Ниту, и посадил их в разные башни

<…>
N>То есть Чита должна назвать нечётный номер, а Нита — чётный.

Не понятно, чем с т. з. второй принцессы одно чётное число отличается от другого. Даже если она как-то узнает, сколько у второй решек приходится в среднем на орла (из-за флюктуаций же может быть не точно 1 для любой конечной подпоследовательности), то всё равно все перестановки этих результатов равновероятны же.

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

С другой стороны, можно представить себе стратегию, в которой принцесса использует только операции вида "просматриваем последовательность, пока что-то не найдём".
Ок. Мы попадаем в ситуацию условной вероятности. Например, Нита ищет такую последовательность из 1000 бросков, в которой решек (или орлов) на 100 больше.
Это эквивалентно тому, что дракон бросает свою монетку 2000 раз и предъявляет последовательность принцессам, только если подпоследовательность Ниты удовлетворяет такому условию. Но даже тут Нита ничего не будет знать про результаты бросков Читы же. Назовём стратегии такого вида Вид2

Не совсем понятно, есть ли ещё какие-то виды стратегий для работы с бесконечной последовательностью.

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

Начать предлагаю с 4-х бросков (для двух у принцесс нет выбора, каждой не известна подпоследовательность длины 1)
Опять же, для простоты, предлагаю считать, что каждой тупо дают последовательность из двух монет и надо выбрать номер в последовательности другой.

Предположим, для начала, что стратегии у них одинаковые.
тогда стратегия -- это отображение пар результатов (0,0), (0,1) и т. д, на номер

Получаем условные вероятности.

Пусть при каких-то конкретных ответах принцесс, a1 и а2 вероятность получить в соответствующих позициях решку(0) — p1 и p2
тогда условная вероятность удачи -- это p1*p2 + (1-p1)*(1-p2) = 1 -p1 — p2 + 2 p1 p2, а неудачи -- p1(1-p2)+(1-p1)p2 = p1 + p2 — 2 p1 p2

Пусть, например, стратегия такая, что всегда 0, а если (1,0), то 1
тогда если принцесса назвала 1, то с вероятностью 2/3 на 0 позиции у неё 0 и с вероятностью 2/3 на 1-й единица. А если назвала 1, то у неё точно (1,0)

при этом ответ 0 принцесса даст с вероятностью 3/4, а 1 -- 1/4

тогда имеем 4 варианта
1-я   2-я   p     p1   p2    p_win   вклад в победу
0      0   9/16   2/3  2/3   5/9     9/16 * 5/9 = 5/16
0      1   3/16    0   2/3   2/3     3/16 * 2/3 = 2/16 -- !!!
1      0   3/16   2/3   0    2/3     3/16 * 2/3 = 2/16
1      1   1/16    1    1     1      1/16 *  1  = 1/16
итого                                            10/16 = 5/8 > 1/2 !!!


Так что решение явно есть, и смысл в том, что деля ситуацию на N (по числу ответов случаям) принцессы смещают условные вероятность проигрыша, при этом, при удачной стратегии, можно сместить так, что в частых раскладах вероятность выигрыша будет > .5, а в редких меньше. Но в среднем это даст общее матожидание > .5 !!!

Кстати, стратегия "верни позицию первой решки" (а если последовательность конечна, и все орлы, то не важно что, например 0) по тем же причинам даст заметно больше .5 и будет как раз стратегией вида2, то есть без противоречий

И её матожидание выигрыша легко считается.

пусть у обе бесконечные последовательности представлены в виде первая_монета+хвост.

Тогда стратегия "позиция первой решки" даст :

решка + хвост1  решка + хвост2 -- обе скажут 0, и победят
решка + хвост1  орёл + хвост2  -- первая сделает ставку на орла, вторая с вероятностью .5 угадает позицию орла в хвост1
орёл + хвост1   решка + хвост2 -- аналогично
орёл + хвост1   орёл + хвост2  -- обе играют по той же стратегии на хвост1 и хвост2

Если р -- вероятность выигрыша при этой стратегии, то получим

4р = 1 + .5 + .5 + р => 3p = 2 => p = 2/3

Интересно, можно ли превзойти?
Ещё интересно, есть ли оптимальная симметричная стратегия, или двум принцессам нужно разных придерживаться. Пока всё что я нашёл, имело и симметричный вариант стратегии...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Отредактировано 10.03.2020 7:38 Erop . Предыдущая версия . Еще …
Отредактировано 04.03.2020 17:56 Erop . Предыдущая версия .
Отредактировано 04.03.2020 17:44 Erop . Предыдущая версия .
Отредактировано 04.03.2020 17:08 Erop . Предыдущая версия .
Re[2]: Спасти принцесс
От: Erop Россия  
Дата: 04.03.20 17:51
Оценка:
E>Интересно, можно ли превзойти?

Ха!
Стратегия
0 -- если:
(0, 0, 0)
(0, 0, 1)
(0, 1, 1)
(1, 1, 1)

1 -- если:
(0, 1, 0)
(1, 1, 0)

2 -- если
(1, 0, 0)
(1, 0, 1)

Даёт 11/16, что больше 2/3
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Отредактировано 05.03.2020 8:10 Erop . Предыдущая версия .
Re: Спасти принцесс
От: biochemist СССР https://www.anekdot.ru/i/caricatures/normal/20/7/27/1595846503.jpg
Дата: 04.03.20 18:09
Оценка:
Здравствуйте, nikholas, Вы писали:

N>Принцессы знают о повадках Злобного Дракона и могли заранее до похищения договориться

Всегда говорить "решка".
«Национализм во мне столь естественный, что никогда никаким интернационалистам его из меня не вытравить»
Менделеев Д. И.
Re[2]: Спасти принцесс
От: Erop Россия  
Дата: 05.03.20 08:08
Оценка:
E>Интересно, можно ли превзойти?


Нашлась симметричная стратегия с вероятностью победы 89/128 (0.6953125)

{0: ( 
     (0, 0, 0, 0),
     (0, 0, 0, 1),
     (0, 0, 1, 0),
     (0, 0, 1, 1),
     (0, 1, 0, 1),
     (0, 1, 1, 1),
     (1, 1, 1, 1)
    ),
 1: ((0, 1, 0, 0), (0, 1, 1, 0), (1, 1, 0, 0), (1, 1, 1, 0)),
 2: ((1, 1, 0, 1),),
 3: ((1, 0, 0, 0), (1, 0, 0, 1), (1, 0, 1, 0), (1, 0, 1, 1))}
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[2]: Спасти принцесс
От: Erop Россия  
Дата: 05.03.20 09:02
Оценка:
Здравствуйте, biochemist, Вы писали:

N>>Принцессы знают о повадках Злобного Дракона и могли заранее до похищения договориться

B>Всегда говорить "решка".

Непер в том, что им надо сказать не "решка", а номер броска в чужой подпоследовательности...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re: Спасти принцесс
От: Erop Россия  
Дата: 05.03.20 09:14
Оценка:
Здравствуйте, nikholas, Вы писали:

N>Принцессы знают о повадках Злобного Дракона и могли заранее до похищения договориться

N>о стратегиях. Как им следует себя вести и чему равна вероятность спасения?


Я тут вспомнил, вдруг, что это таки этюды для программистов
Если ограничиться только конечными последовательностями, то можно пытаться что-то считать.
Для простоты, предлагаю считать, что каждой тупо дают последовательность из N монет и надо выбрать номер в последовательности другой.
Соответственно, стратегия принцессы, в таком случае, это просто отображение любой последовательности длины N на номер от 0 до N-1, включая концы (да, я считаю с 0 )
  "Итого, пишем..."
def inverse_dictionary( d ) :
    res = { d[k]:set() for k in d}
    for k in d :
        res[d[k]].add( k )
    return { k:tuple( sorted( res[k] ) ) for k in sorted( res ) }


def сartesian_2( set1, set2 ) :
    for i in set1 :
        for j in set2 :
            yield (i, j)

            
def all_seq( n, elements=(0,1) ) :
    """
    возвращает все возможные последовательности из elements
    """
    if n <= 0 :
        yield elements[:0]
    elif n == 1 :
        for i in range(len(elements)) :
            yield elements[i:i+1]
    else :
        for l in all_seq( n//2, elements ) :
            for r in all_seq( n - n//2, elements ) :
                yield l+r
                
def strategy_0( seq ) :
    return 0

def test_of_strategy( n, strategy_l, strategy_r ) :
    win_count = 0
    count = 0
    
    for l in all_seq( n ) :
        i_r = strategy_l(l)
        for r in all_seq( n ) :
            i_l = strategy_r(r)
            win_count += (l[i_l]==r[i_r])
            count += 1
            #if l[i_l]==r[i_r] and win_count < 100:
            #    print( f"{win_count}:{l}, {r}" )
    #print( f"{win_count}/{count}" )
    return win_count/count
        
def get_all_strategies( n ) :
    variants = list( all_seq( n ) )
    results = tuple( range(n) )
    for  r in all_seq( len(variants), results ) :
        yield dict(zip(variants, r))
    pass
 

def test_all_strategies( n ) :
    best_res = 0.5
    best_strategies = (None, None)
    for d_l in get_all_strategies( n ) :
        strategy_l = lambda s : d_l[s]
        for d_r in get_all_strategies( n ) :
            strategy_r = lambda s : d_r[s]
            t = test_of_strategy( n, strategy_l, strategy_r )
            if t > best_res :
                best_res = t
                best_strategies = (d_l, d_r)
                print( best_res, "-"*100 )
                print(d_l)
                if d_l != d_r :
                    print("- "*10)
                    print(d_r)
    return best_res, inverse_dictionary( best_strategies )

Проверим, сравнив с тем, что уже известно:
def strategy_0( seq ) :
    """
    тестовая стратегия, возвращает 0 для любой последовательности
    """
    return 0

test_of_strategy( 10, strategy_0, strategy_0 )
  "печатает (2.35s)"
0.5


for d in get_all_strategies(2) :
    print( d )
  "печатает (6ms)"
{(0, 0): 0, (0, 1): 0, (1, 0): 0, (1, 1): 0}
{(0, 0): 0, (0, 1): 0, (1, 0): 0, (1, 1): 1}
{(0, 0): 0, (0, 1): 0, (1, 0): 1, (1, 1): 0}
{(0, 0): 0, (0, 1): 0, (1, 0): 1, (1, 1): 1}
{(0, 0): 0, (0, 1): 1, (1, 0): 0, (1, 1): 0}
{(0, 0): 0, (0, 1): 1, (1, 0): 0, (1, 1): 1}
{(0, 0): 0, (0, 1): 1, (1, 0): 1, (1, 1): 0}
{(0, 0): 0, (0, 1): 1, (1, 0): 1, (1, 1): 1}
{(0, 0): 1, (0, 1): 0, (1, 0): 0, (1, 1): 0}
{(0, 0): 1, (0, 1): 0, (1, 0): 0, (1, 1): 1}
{(0, 0): 1, (0, 1): 0, (1, 0): 1, (1, 1): 0}
{(0, 0): 1, (0, 1): 0, (1, 0): 1, (1, 1): 1}
{(0, 0): 1, (0, 1): 1, (1, 0): 0, (1, 1): 0}
{(0, 0): 1, (0, 1): 1, (1, 0): 0, (1, 1): 1}
{(0, 0): 1, (0, 1): 1, (1, 0): 1, (1, 1): 0}
{(0, 0): 1, (0, 1): 1, (1, 0): 1, (1, 1): 1}


test_all_strategies( 2 )
  "печатает (15ms)"
0.625 ----------------------------------------------------------------------------------------------------
{0: ((0, 0), (0, 1), (1, 1)), 1: ((1, 0),)}

(0.625, {0: ((0, 0), (0, 1), (1, 1)), 1: ((1, 0),)}, None)


test_all_strategies( 3 )
  "печатает (1h 30m 49s)"
0.53125 ----------------------------------------------------------------------------------------------------
{(0, 0, 0): 0, (0, 0, 1): 0, (0, 1, 0): 0, (0, 1, 1): 0, (1, 0, 0): 0, (1, 0, 1): 0, (1, 1, 0): 1, (1, 1, 1): 0}
- - - - - - - - - - 
{(0, 0, 0): 0, (0, 0, 1): 0, (0, 1, 0): 0, (0, 1, 1): 0, (1, 0, 0): 0, (1, 0, 1): 2, (1, 1, 0): 0, (1, 1, 1): 0}
0.5625 ----------------------------------------------------------------------------------------------------
{(0, 0, 0): 0, (0, 0, 1): 0, (0, 1, 0): 0, (0, 1, 1): 0, (1, 0, 0): 0, (1, 0, 1): 0, (1, 1, 0): 1, (1, 1, 1): 0}
- - - - - - - - - - 
{(0, 0, 0): 0, (0, 0, 1): 0, (0, 1, 0): 0, (0, 1, 1): 0, (1, 0, 0): 2, (1, 0, 1): 2, (1, 1, 0): 0, (1, 1, 1): 0}
0.59375 ----------------------------------------------------------------------------------------------------
{(0, 0, 0): 0, (0, 0, 1): 0, (0, 1, 0): 0, (0, 1, 1): 0, (1, 0, 0): 0, (1, 0, 1): 1, (1, 1, 0): 2, (1, 1, 1): 0}
- - - - - - - - - - 
{(0, 0, 0): 0, (0, 0, 1): 0, (0, 1, 0): 0, (0, 1, 1): 0, (1, 0, 0): 1, (1, 0, 1): 1, (1, 1, 0): 2, (1, 1, 1): 0}
0.625 ----------------------------------------------------------------------------------------------------
{(0, 0, 0): 0, (0, 0, 1): 0, (0, 1, 0): 0, (0, 1, 1): 0, (1, 0, 0): 1, (1, 0, 1): 0, (1, 1, 0): 1, (1, 1, 1): 0}
- - - - - - - - - - 
{(0, 0, 0): 0, (0, 0, 1): 0, (0, 1, 0): 0, (0, 1, 1): 0, (1, 0, 0): 2, (1, 0, 1): 2, (1, 1, 0): 0, (1, 1, 1): 0}
0.65625 ----------------------------------------------------------------------------------------------------
{(0, 0, 0): 0, (0, 0, 1): 0, (0, 1, 0): 0, (0, 1, 1): 0, (1, 0, 0): 1, (1, 0, 1): 1, (1, 1, 0): 2, (1, 1, 1): 0}
0.6875 ----------------------------------------------------------------------------------------------------
{(0, 0, 0): 0, (0, 0, 1): 0, (0, 1, 0): 1, (0, 1, 1): 0, (1, 0, 0): 2, (1, 0, 1): 2, (1, 1, 0): 1, (1, 1, 1): 0}

(0.6875,
 {0: ((0, 0, 0), (0, 0, 1), (0, 1, 1), (1, 1, 1)),
  1: ((0, 1, 0), (1, 1, 0)),
  2: ((1, 0, 0), (1, 0, 1))},
 None)


test_all_sym_strategies( 3 )
  "печатает ( 902ms)"
0.53125 ----------------------------------------------------------------------------------------------------
{(0, 0, 0): 0, (0, 0, 1): 0, (0, 1, 0): 0, (0, 1, 1): 0, (1, 0, 0): 0, (1, 0, 1): 0, (1, 1, 0): 2, (1, 1, 1): 0}
0.5625 ----------------------------------------------------------------------------------------------------
{(0, 0, 0): 0, (0, 0, 1): 0, (0, 1, 0): 0, (0, 1, 1): 0, (1, 0, 0): 0, (1, 0, 1): 1, (1, 1, 0): 2, (1, 1, 1): 0}
0.625 ----------------------------------------------------------------------------------------------------
{(0, 0, 0): 0, (0, 0, 1): 0, (0, 1, 0): 0, (0, 1, 1): 0, (1, 0, 0): 1, (1, 0, 1): 1, (1, 1, 0): 0, (1, 1, 1): 0}
0.65625 ----------------------------------------------------------------------------------------------------
{(0, 0, 0): 0, (0, 0, 1): 0, (0, 1, 0): 0, (0, 1, 1): 0, (1, 0, 0): 1, (1, 0, 1): 1, (1, 1, 0): 2, (1, 1, 1): 0}
0.6875 ----------------------------------------------------------------------------------------------------
{(0, 0, 0): 0, (0, 0, 1): 0, (0, 1, 0): 1, (0, 1, 1): 0, (1, 0, 0): 2, (1, 0, 1): 2, (1, 1, 0): 1, (1, 1, 1): 0}

(0.6875,
 {0: ((0, 0, 0), (0, 0, 1), (0, 1, 1), (1, 1, 1)),
  1: ((0, 1, 0), (1, 1, 0)),
  2: ((1, 0, 0), (1, 0, 1))})


test_all_sym_strategies( 3 )
  "печатает (пока не сошлось...)"
0.5078125 ----------------------------------------------------------------------------------------------------
{(0, 0, 0, 0): 0, (0, 0, 0, 1): 0, (0, 0, 1, 0): 0, (0, 0, 1, 1): 0, (0, 1, 0, 0): 0, (0, 1, 0, 1): 0, (0, 1, 1, 0): 0, (0, 1, 1, 1): 0, (1, 0, 0, 0): 0, (1, 0, 0, 1): 0, (1, 0, 1, 0): 0, (1, 0, 1, 1): 0, (1, 1, 0, 0): 0, (1, 1, 0, 1): 0, (1, 1, 1, 0): 3, (1, 1, 1, 1): 0}
0.515625 ----------------------------------------------------------------------------------------------------
{(0, 0, 0, 0): 0, (0, 0, 0, 1): 0, (0, 0, 1, 0): 0, (0, 0, 1, 1): 0, (0, 1, 0, 0): 0, (0, 1, 0, 1): 0, (0, 1, 1, 0): 0, (0, 1, 1, 1): 0, (1, 0, 0, 0): 0, (1, 0, 0, 1): 0, (1, 0, 1, 0): 0, (1, 0, 1, 1): 0, (1, 1, 0, 0): 0, (1, 1, 0, 1): 2, (1, 1, 1, 0): 3, (1, 1, 1, 1): 0}
0.53125 ----------------------------------------------------------------------------------------------------
{(0, 0, 0, 0): 0, (0, 0, 0, 1): 0, (0, 0, 1, 0): 0, (0, 0, 1, 1): 0, (0, 1, 0, 0): 0, (0, 1, 0, 1): 0, (0, 1, 1, 0): 0, (0, 1, 1, 1): 0, (1, 0, 0, 0): 0, (1, 0, 0, 1): 0, (1, 0, 1, 0): 0, (1, 0, 1, 1): 0, (1, 1, 0, 0): 2, (1, 1, 0, 1): 2, (1, 1, 1, 0): 0, (1, 1, 1, 1): 0}
0.5390625 ----------------------------------------------------------------------------------------------------
{(0, 0, 0, 0): 0, (0, 0, 0, 1): 0, (0, 0, 1, 0): 0, (0, 0, 1, 1): 0, (0, 1, 0, 0): 0, (0, 1, 0, 1): 0, (0, 1, 1, 0): 0, (0, 1, 1, 1): 0, (1, 0, 0, 0): 0, (1, 0, 0, 1): 0, (1, 0, 1, 0): 0, (1, 0, 1, 1): 0, (1, 1, 0, 0): 2, (1, 1, 0, 1): 2, (1, 1, 1, 0): 3, (1, 1, 1, 1): 0}
0.546875 ----------------------------------------------------------------------------------------------------
{(0, 0, 0, 0): 0, (0, 0, 0, 1): 0, (0, 0, 1, 0): 0, (0, 0, 1, 1): 0, (0, 1, 0, 0): 0, (0, 1, 0, 1): 0, (0, 1, 1, 0): 0, (0, 1, 1, 1): 0, (1, 0, 0, 0): 0, (1, 0, 0, 1): 0, (1, 0, 1, 0): 0, (1, 0, 1, 1): 1, (1, 1, 0, 0): 2, (1, 1, 0, 1): 2, (1, 1, 1, 0): 3, (1, 1, 1, 1): 0}
0.5625 ----------------------------------------------------------------------------------------------------
{(0, 0, 0, 0): 0, (0, 0, 0, 1): 0, (0, 0, 1, 0): 0, (0, 0, 1, 1): 0, (0, 1, 0, 0): 0, (0, 1, 0, 1): 0, (0, 1, 1, 0): 0, (0, 1, 1, 1): 0, (1, 0, 0, 0): 0, (1, 0, 0, 1): 0, (1, 0, 1, 0): 1, (1, 0, 1, 1): 1, (1, 1, 0, 0): 2, (1, 1, 0, 1): 2, (1, 1, 1, 0): 0, (1, 1, 1, 1): 0}
0.5703125 ----------------------------------------------------------------------------------------------------
{(0, 0, 0, 0): 0, (0, 0, 0, 1): 0, (0, 0, 1, 0): 0, (0, 0, 1, 1): 0, (0, 1, 0, 0): 0, (0, 1, 0, 1): 0, (0, 1, 1, 0): 0, (0, 1, 1, 1): 0, (1, 0, 0, 0): 0, (1, 0, 0, 1): 0, (1, 0, 1, 0): 1, (1, 0, 1, 1): 1, (1, 1, 0, 0): 2, (1, 1, 0, 1): 2, (1, 1, 1, 0): 3, (1, 1, 1, 1): 0}
0.578125 ----------------------------------------------------------------------------------------------------
{(0, 0, 0, 0): 0, (0, 0, 0, 1): 0, (0, 0, 1, 0): 0, (0, 0, 1, 1): 0, (0, 1, 0, 0): 0, (0, 1, 0, 1): 0, (0, 1, 1, 0): 0, (0, 1, 1, 1): 0, (1, 0, 0, 0): 0, (1, 0, 0, 1): 0, (1, 0, 1, 0): 2, (1, 0, 1, 1): 1, (1, 1, 0, 0): 3, (1, 1, 0, 1): 3, (1, 1, 1, 0): 2, (1, 1, 1, 1): 0}
0.5859375 ----------------------------------------------------------------------------------------------------
{(0, 0, 0, 0): 0, (0, 0, 0, 1): 0, (0, 0, 1, 0): 0, (0, 0, 1, 1): 0, (0, 1, 0, 0): 0, (0, 1, 0, 1): 0, (0, 1, 1, 0): 0, (0, 1, 1, 1): 0, (1, 0, 0, 0): 0, (1, 0, 0, 1): 0, (1, 0, 1, 0): 3, (1, 0, 1, 1): 1, (1, 1, 0, 0): 3, (1, 1, 0, 1): 2, (1, 1, 1, 0): 3, (1, 1, 1, 1): 0}
0.6015625 ----------------------------------------------------------------------------------------------------
{(0, 0, 0, 0): 0, (0, 0, 0, 1): 0, (0, 0, 1, 0): 0, (0, 0, 1, 1): 0, (0, 1, 0, 0): 0, (0, 1, 0, 1): 0, (0, 1, 1, 0): 0, (0, 1, 1, 1): 0, (1, 0, 0, 0): 0, (1, 0, 0, 1): 1, (1, 0, 1, 0): 1, (1, 0, 1, 1): 1, (1, 1, 0, 0): 2, (1, 1, 0, 1): 2, (1, 1, 1, 0): 0, (1, 1, 1, 1): 0}
0.609375 ----------------------------------------------------------------------------------------------------
{(0, 0, 0, 0): 0, (0, 0, 0, 1): 0, (0, 0, 1, 0): 0, (0, 0, 1, 1): 0, (0, 1, 0, 0): 0, (0, 1, 0, 1): 0, (0, 1, 1, 0): 0, (0, 1, 1, 1): 0, (1, 0, 0, 0): 0, (1, 0, 0, 1): 1, (1, 0, 1, 0): 1, (1, 0, 1, 1): 1, (1, 1, 0, 0): 2, (1, 1, 0, 1): 2, (1, 1, 1, 0): 3, (1, 1, 1, 1): 0}
0.6171875 ----------------------------------------------------------------------------------------------------
{(0, 0, 0, 0): 0, (0, 0, 0, 1): 0, (0, 0, 1, 0): 0, (0, 0, 1, 1): 0, (0, 1, 0, 0): 0, (0, 1, 0, 1): 0, (0, 1, 1, 0): 0, (0, 1, 1, 1): 0, (1, 0, 0, 0): 0, (1, 0, 0, 1): 1, (1, 0, 1, 0): 2, (1, 0, 1, 1): 1, (1, 1, 0, 0): 3, (1, 1, 0, 1): 3, (1, 1, 1, 0): 2, (1, 1, 1, 1): 0}
0.625 ----------------------------------------------------------------------------------------------------
{(0, 0, 0, 0): 0, (0, 0, 0, 1): 0, (0, 0, 1, 0): 0, (0, 0, 1, 1): 0, (0, 1, 0, 0): 0, (0, 1, 0, 1): 0, (0, 1, 1, 0): 0, (0, 1, 1, 1): 0, (1, 0, 0, 0): 1, (1, 0, 0, 1): 0, (1, 0, 1, 0): 3, (1, 0, 1, 1): 1, (1, 1, 0, 0): 3, (1, 1, 0, 1): 2, (1, 1, 1, 0): 3, (1, 1, 1, 1): 0}
0.6328125 ----------------------------------------------------------------------------------------------------
{(0, 0, 0, 0): 0, (0, 0, 0, 1): 0, (0, 0, 1, 0): 0, (0, 0, 1, 1): 0, (0, 1, 0, 0): 0, (0, 1, 0, 1): 0, (0, 1, 1, 0): 0, (0, 1, 1, 1): 0, (1, 0, 0, 0): 1, (1, 0, 0, 1): 1, (1, 0, 1, 0): 1, (1, 0, 1, 1): 1, (1, 1, 0, 0): 0, (1, 1, 0, 1): 0, (1, 1, 1, 0): 3, (1, 1, 1, 1): 0}
0.640625 ----------------------------------------------------------------------------------------------------
{(0, 0, 0, 0): 0, (0, 0, 0, 1): 0, (0, 0, 1, 0): 0, (0, 0, 1, 1): 0, (0, 1, 0, 0): 0, (0, 1, 0, 1): 0, (0, 1, 1, 0): 0, (0, 1, 1, 1): 0, (1, 0, 0, 0): 1, (1, 0, 0, 1): 1, (1, 0, 1, 0): 1, (1, 0, 1, 1): 1, (1, 1, 0, 0): 0, (1, 1, 0, 1): 2, (1, 1, 1, 0): 3, (1, 1, 1, 1): 0}
0.65625 ----------------------------------------------------------------------------------------------------
{(0, 0, 0, 0): 0, (0, 0, 0, 1): 0, (0, 0, 1, 0): 0, (0, 0, 1, 1): 0, (0, 1, 0, 0): 0, (0, 1, 0, 1): 0, (0, 1, 1, 0): 0, (0, 1, 1, 1): 0, (1, 0, 0, 0): 1, (1, 0, 0, 1): 1, (1, 0, 1, 0): 1, (1, 0, 1, 1): 1, (1, 1, 0, 0): 2, (1, 1, 0, 1): 2, (1, 1, 1, 0): 0, (1, 1, 1, 1): 0}
0.6640625 ----------------------------------------------------------------------------------------------------
{(0, 0, 0, 0): 0, (0, 0, 0, 1): 0, (0, 0, 1, 0): 0, (0, 0, 1, 1): 0, (0, 1, 0, 0): 0, (0, 1, 0, 1): 0, (0, 1, 1, 0): 0, (0, 1, 1, 1): 0, (1, 0, 0, 0): 1, (1, 0, 0, 1): 1, (1, 0, 1, 0): 1, (1, 0, 1, 1): 1, (1, 1, 0, 0): 2, (1, 1, 0, 1): 2, (1, 1, 1, 0): 3, (1, 1, 1, 1): 0}
0.671875 ----------------------------------------------------------------------------------------------------
{(0, 0, 0, 0): 0, (0, 0, 0, 1): 0, (0, 0, 1, 0): 0, (0, 0, 1, 1): 0, (0, 1, 0, 0): 0, (0, 1, 0, 1): 0, (0, 1, 1, 0): 0, (0, 1, 1, 1): 0, (1, 0, 0, 0): 1, (1, 0, 0, 1): 1, (1, 0, 1, 0): 2, (1, 0, 1, 1): 1, (1, 1, 0, 0): 3, (1, 1, 0, 1): 3, (1, 1, 1, 0): 2, (1, 1, 1, 1): 0}
0.6796875 ----------------------------------------------------------------------------------------------------
{(0, 0, 0, 0): 0, (0, 0, 0, 1): 0, (0, 0, 1, 0): 0, (0, 0, 1, 1): 0, (0, 1, 0, 0): 1, (0, 1, 0, 1): 0, (0, 1, 1, 0): 0, (0, 1, 1, 1): 0, (1, 0, 0, 0): 2, (1, 0, 0, 1): 2, (1, 0, 1, 0): 3, (1, 0, 1, 1): 2, (1, 1, 0, 0): 1, (1, 1, 0, 1): 1, (1, 1, 1, 0): 3, (1, 1, 1, 1): 0}
0.6875 ----------------------------------------------------------------------------------------------------
{(0, 0, 0, 0): 0, (0, 0, 0, 1): 0, (0, 0, 1, 0): 0, (0, 0, 1, 1): 0, (0, 1, 0, 0): 1, (0, 1, 0, 1): 0, (0, 1, 1, 0): 1, (0, 1, 1, 1): 0, (1, 0, 0, 0): 3, (1, 0, 0, 1): 2, (1, 0, 1, 0): 3, (1, 0, 1, 1): 3, (1, 1, 0, 0): 1, (1, 1, 0, 1): 2, (1, 1, 1, 0): 1, (1, 1, 1, 1): 0}
0.6953125 ----------------------------------------------------------------------------------------------------
{(0, 0, 0, 0): 0, (0, 0, 0, 1): 0, (0, 0, 1, 0): 0, (0, 0, 1, 1): 0, (0, 1, 0, 0): 1, (0, 1, 0, 1): 0, (0, 1, 1, 0): 1, (0, 1, 1, 1): 0, (1, 0, 0, 0): 3, (1, 0, 0, 1): 3, (1, 0, 1, 0): 3, (1, 0, 1, 1): 3, (1, 1, 0, 0): 1, (1, 1, 0, 1): 2, (1, 1, 1, 0): 1, (1, 1, 1, 1): 0}

Пока всё сходится, правда последние две я нашёл уже этим кодом...
Но ту, которая даёт 11/16 потом независимо проверял


  "пока что нашлась симметричная стратегия длины 4 с результатом 89/128 (0.6953125)"
Для удобства чтения я записал не отображение последовательностей на индексы, а отображение индексов на набор последовательностей, которому они соответствуют
{0: ( 
     (0, 0, 0, 0),
     (0, 0, 0, 1),
     (0, 0, 1, 0),
     (0, 0, 1, 1),
     (0, 1, 0, 1),
     (0, 1, 1, 1),
     (1, 1, 1, 1)
    ),
 1: ((0, 1, 0, 0), (0, 1, 1, 0), (1, 1, 0, 0), (1, 1, 1, 0)),
 2: ((1, 1, 0, 1),),
 3: ((1, 0, 0, 0), (1, 0, 0, 1), (1, 0, 1, 0), (1, 0, 1, 1))}


На мой взгляд, можно устроить тут соревнование на лучшее спасение принцесс. Наверное было бы удобно, если бы TC вёл в стартовом сообщении лог, кто чего достиг.
Например, в виде тэга cut с заголовком в котором написана вероятность выигрыша, длина стратегии и кем и когда получена, а внутри описание самой стратегии
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Отредактировано 05.03.2020 9:16 Erop . Предыдущая версия .
Re[2]: Спасти принцесс
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 05.03.20 11:45
Оценка: 26 (3)
Здравствуйте, Erop, Вы писали:

E>На мой взгляд, можно устроить тут соревнование на лучшее спасение принцесс. Наверное было бы удобно, если бы TC вёл в стартовом сообщении лог, кто чего достиг.

E>Например, в виде тэга cut с заголовком в котором написана вероятность выигрыша, длина стратегии и кем и когда получена, а внутри описание самой стратегии

Кстати, эта задача попалась тут:
  видео

О ней потом поговорили тут:
  видео
Re[3]: Спасти принцесс
От: Erop Россия  
Дата: 05.03.20 12:39
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Кстати, эта задача попалась тут:

N>
  видео
N>

N>О ней потом поговорили тут:
N>
  видео
N>


Сейчас смотреть некогда. Они её решили? В смысле, нашли оптимальную стратегию?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[4]: Спасти принцесс
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 05.03.20 12:47
Оценка:
Здравствуйте, Erop, Вы писали:

E>Сейчас смотреть некогда. Они её решили? В смысле, нашли оптимальную стратегию?


В первом ролике был сам конкурс и задача эта давалась на 5 минут — никаких идей. Во втором ролике шёл обзор стратегий, насколько я помню, самую верную не нашли, а просто рассмотрели несколько возможных.
Re[5]: Спасти принцесс
От: Erop Россия  
Дата: 05.03.20 13:21
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>В первом ролике был сам конкурс и задача эта давалась на 5 минут — никаких идей.

5 минту -- как-то мало...

N>Во втором ролике шёл обзор стратегий, насколько я помню, самую верную не нашли, а просто рассмотрели несколько возможных.

Не помнишь, 0.7 хотя бы достигли?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[6]: Спасти принцесс
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 05.03.20 13:54
Оценка: :)
Здравствуйте, Erop, Вы писали:

N>>Во втором ролике шёл обзор стратегий, насколько я помню, самую верную не нашли, а просто рассмотрели несколько возможных.

E>Не помнишь, 0.7 хотя бы достигли?

В самом видео только 0.6(6) и упоминание якобы существующего решения больше 70%. Твоё лучше
Re[7]: Спасти принцесс
От: Erop Россия  
Дата: 06.03.20 07:58
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>В самом видео только 0.6(6) и упоминание якобы существующего решения больше 70%. Твоё лучше


Ну 2/3 -- это стратегия "называть позицию первой решки" даёт.
А вот .7 -- интересный порог. Я тут что-то перебором с оценкой на Монте-Карло и дифф. эволюцией параметров стратегии пытался искать, пока превзойти эту границу не удалось, хотя удаётся близко приблизится. Но при этом у меня пока не придумалось хорошей параметризации стратегий
Но у меня и личного и машинного времени на эту фигню не так уж и много.
Просто и правда интересно, и, я подозреваю, для теории игр, небезинтересно, но если кто-то что-то уже придумал, то мне проще было бы почитать, чем греть атмосферу переборными алгоритмами

С длиной последовательности очень быстро растёт перебор
Число последовательностей -- это 2**N, число стратегий -- это N**(2**N), так что упс...

Есть несколько гипотез. Например, стратегия в форме набор подстрок последовательностей с указанной позицией. Типа если такая подстрока в такой-то позиции есть, то даём такой-то индекс. Ну и упорядоченный список таких правил. Или "деревянная" стратегия. То есть мы имеем такой алгоритм. На вход получаем последовательность, несколько бросков пропускаем, потом ветвимся на орёл-решка. Получаем что-то вроде структуры (0, (0,), (0, (2, (1,), (3,)), (0, (4,), (2,)))), которая соответствует алгоритму:
def tree_strategy( l ) :
    i = 0                    # (0, 
    if l[i] == 0  :          
        return 0             #    (0,),
    else: 
        i += 1               #    (0, 
        if l[i] == 0 :
            i += 1 + 2       #     (2, 
            if l[i] == 0 :   
                return 1     #        (1,), 
            else :
                return 3     #        (3,)
        else :               #     ), 
            i += 1           #     (0, 
            if l[i] == 0 :
                return 4     #        (4,), 
            else :
                return 2     #        (2,)
                             #     )
                             # )

Конечно это для дифф. эволюции не годится, но разные другие генетические алгоритмы с таким могут работать.

Для дифф. эволюции же надо описание стратегии, в виде честных float. Например, можно задавать стратегию для последовательностей длины N в виде N+1 числа, складывать те из первых N, кому соответствуют орлы, прибавлять последнее, от всего брать целую часть и остаток от деления на N
Только многопараметрическая оптимизация фигово работает и так сильно не все стратегии можно получить.
Ещё есть вариант — кодировать решку -1, а орла 1, потом для каждой позиции выбираем по случайному числу, и считаем, что это полином.
После чего выбираем N (можно и меньше, K, например) чисел, подставляем их в этот полином, считаем суммы значений, и дальше снова целая часть и остаток от деления.
А вот этот набор из K чисел уже подбираем.

Но всё это как-то безыдейно
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[8]: Спасти принцесс
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 06.03.20 08:40
Оценка: +1
Здравствуйте, Erop, Вы писали:

E>Но всё это как-то безыдейно


Тоже нет времени на это всё. В комментариях есть результаты решений:

69.5% (178/256) при четырёх бросках:
https://imgur.com/xgOcQ5R
Если увеличить до 6 бросков, получается 69.9% (1433/2048).

Так что...
Re[9]: Спасти принцесс
От: RiNSpy  
Дата: 06.03.20 23:36
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Если увеличить до 6 бросков, получается 69.9% (1433/2048).


Я что-то не могу понять, а вникать лень.

— каждый бросок монетки дает случайный исход 0 или 1 с одинаковой вероятностью 1/2
— Чита и Гита дают ответы независимо друг от друга и не имеют никакой дополнительной информации

Как при этих условиях может быть вероятность выше 0.5? В чём суть решения?
Re[10]: Спасти принцесс
От: Буравчик Россия  
Дата: 07.03.20 10:31
Оценка: 8 (1) +1
Здравствуйте, RiNSpy, Вы писали:

RNS>Я что-то не могу понять, а вникать лень.


Плохо, что лень.

RNS>— каждый бросок монетки дает случайный исход 0 или 1 с одинаковой вероятностью 1/2

RNS>— Чита и Гита дают ответы независимо друг от друга и не имеют никакой дополнительной информации
RNS>Как при этих условиях может быть вероятность выше 0.5? В чём суть решения?

Это кажется невозможным, но решения "выше 0.5" существуют. Посмотри видео.

Вот, например, решение когда принцесса называет номер, в котором у нее выпала первая решка.
Обозначим O — орел, Р — решка, Х — неизвестно (равновероятно орел или решка)

1. Будут случаи, когда указанные принцессами места совпали. Тогда обе принцессы указывают на решку (чужую). Вероятность выигрыша в этому случае 1.

ООООPХХХХХХХХХ...
    ^   
    V   
OOOOPXXXXXXXXX...


2. И будут случаи, когда места не совпали. Тогда одна принцесса указывает на орла (чужого), а вторая принцесса указывает не что-то неизвестное (орел или решка). Если это неизвестное окажется орлом, то выиграли, если окажется решкой, то проиграли. Вероятность выигрыша 0.5

ООООООOOРХХХХХ...
    ^   |
    |   V
OOOOPXXXXXXXXX...


Т.к. первый случай все же будет иногда встречаться, то общая вероятность выигрыша более 0.5

P.S. Я решить задачу самостоятельно не смог. И тоже считал, что это невозможно
Best regards, Буравчик
Re[11]: Спасти принцесс
От: Erop Россия  
Дата: 11.03.20 17:51
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Т.к. первый случай все же будет иногда встречаться, то общая вероятность выигрыша более 0.5


Есть ещё и второй способ! Можно сделать так, что разные ответы будут не равновероятны, и при этом в самом вероятном случае вероятность победы будет больше 0.5, за счёт каких-то других, менее вероятных. В результате в сумме получим >.5

Б>P.S. Я решить задачу самостоятельно не смог. И тоже считал, что это невозможно

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