Пасьянс «Косынка»
Косынка (также — «Клондайк») — старинный пасьянс. Играется одной колодой в 52 карты. Вы можете использовать правый клик мышки, чтобы открытые на столе карты попали в дом. Количество прокручиваний колоды в нашей версии пасьянса Косынка - бесконечно. Вам нужно постараться разложить все карты за минимальное количество ходов.
იყიდე მანქანა საქართველოში Быстро купить сельхозтехнику новую или же бу на портале selhoztehnika.net.
Сходимость пасьянса "Косынка"
Существует мнение, что любой пасьянс при правильном складывании сходится. Нет, это в корне неверно и если вы возьмете колоду карт и разложите её на столе в 7 стопок от 1 до 7 карт, а остальные положите рядом, то уйдет немало раздач, прежде чем у Вас сойдется хотя бы одна из них. Можно сказать, что пасьянс Косынка при случайном раскладе карт является несходимым :)

Существует математическая модель, который мы пользуемся при раздаче карт, по которой наша Косынка сходится почти всегда (99%). Хотя мы и пишем 100%, это не совсем так и если Вы будете играть онлайн в Косынку, то в 1 случае из 100 Вам представится возможность в этом убедиться.

Если при раздаче открытыми на столе или в закрытой колоде находятся 4 туза, то пасьянс сходится на 100%.

Оценить сходимость случайного расклада онлайн пасьянса Косынка методом перебора - достаточно трудоемкая компьютерная задача.

Сгенерировать пасьянс косынка от обратного, т.е. разложив на стол карты - задача того же порядка сложности, что и оценка сходимости случайного расклада.

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

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

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

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

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

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

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

Если про Косынку Вам всё понятно, можете разложить Паук одной масти или прочитать про сходимость Паука