О сходимости пасьянса «Косынка»

Свежие записи

О сходимости пасьянса «Косынка»


Существует ошибочное мнение, что пасьянс «Косынка» сходится всегда. Я думаю, вызвано это версией в ОС Windows, в которой расклады уже заложены, а не генерируются каждый раз.

Вопрос сходимости возник при создании сайта с пасьянсами, для которого нужны были расклады, выдаваемые пользователям. Для начала мы решили написать один из самых простых и распространенных вариантов игры — «Косынку» и не найдя готовую базу, стали генерировать случайные расклады. Написав JS код для игры мы обнаружили, что сходятся случайные расклады очень редко. На ~50 игр у нас сошлась только одна. Подсовывать пользователям пасьянс, который не сходится — не самый удачный вариант для сайта, поэтому стали искать пути выхода. Кстати если хотите играть косынка онлайн есть на сайте kosinka-card.ru

Выход первый — это забрутфорсить случайный расклад и определить сходимость. Помимо сложности алгоритма этот вариант еще и требовал каких-то неимоверных вычислительных мощностей, примерно, как обсчет партии в шашки. (В среднем пасьянс сходится за чуть более 100 ходов, при этом в процессе игры не всегда нужно выкладывать на стол карту). Этот вариант отпал.

Тогда решили написать правила для генератора пасьянса, посчитав что это будет более простой путь. Напомню, что в «Косынке» участвует 52 карты от двойки до туза 4-х мастей. Закрыты на столе в 7 стопках 21 карта, открыты на столе 7 и 24 карты в колоде, которую можно крутить. Нас интересуют для обсчета карты, которые в колоде и уже открытые на столе (всего 31 карта), т.к. именно ими игрок оперирует.

Правило при генерации добавили такое — среди карт в колоде и открытых на столе (31 карта) должна быть одна полная комбинация красных карт от двойки до туза и одна комбинация черных карт от двойки до туза. После применения такого правила генератор стал выдавать 1 из 150 раскладов удовлетворяющих условию (149 соответственно откидывал).

Сходимость таких раскладов резко повысилась и стала ~90% (по данным на 10.000 раскладов — 979 не сошлось ни разу, 9021 сошлось). Проверить такое количество раскладов нам помог краудсорсинг и наши пользователи, которые играли в «Косынку».

P.S.: Мы пробовали разные правила применять при генерации, но расклады получались либо совсем простые и играть в них было не интересно (когда генератор выдавал нам 1 расклад из 1.000), либо их сходимость не поднималась до приемлемых значений. Спасибо за потраченное время и если Вы знаете правило (универсальный алгоритм) определения сходимости — буду рад прочитать про него.

Также читают

article image
»

Электронные двери для квартир

Входная дверь, как водится, должна ...

article image
»

Диски литые — зачем они нужны?

Колесные диски литые, зачем они нужны? ...

article image
»

Семь малоизвестных фактов о швейцарском ноже

В статье подробно рассказывается о ...

article image
»

Сантехник кто это такой и чем занимается.

Чуть ли не каждый в частных домах и ...

article image
»

Бизнес идеи для маленького города – для начинающих

В рамках этой статьи мы рассмотрим 2 ...

article image
»

Сбор игрушки-пирамидки

Игрушки-пирамидки оптом ежегодно ...

article image
»

Зачем нужны доски объявлений?

До появления Интернет сетей, на ...

article image
»

Выиграете вы или нет

Теперь сходить в казино можно только ...

»

Строительство загородного дома: выбор участка, материалов и обустройство коммуникаций

Перед строительством всегда ...