Схождение пасьянса Косынка

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

Схождение в Косынке

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

Наш знакомый решил забрутфорсить случайный расклад и вычислить его сходимость. Кроме того, что этот алгоритм оказался очень сложным, он ещё и требовал просто гигантских вычислительных мощностей. Немного поразмыслив он решил отойти от этого варианта и попробовать другой способ.

Он посчитал, что более лёгким путём будет написать правила для генератора пасьянса. Напомним Вам правила пасьянса Косынка: в игре участвует вся колода из 52 карт, на столе лежат 7 стопок по 4 карты в каждой, верхние 7 карт в стопках открыты, остальные закрыты, есть ещё колода из 24 карт, из которой можно будет брать карты. Для того, чтобы обсчитать карты нас интересуют 7 открытых карт и сама колода, всего 31 карта, потому что этими картами игрок будет пользоваться в первую очередь.

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

Теперь сходимость раскладов стала почти 90% (например из 10.000 раскладов не сошлись только 979, а 9021 сошлись). Чтобы проверит насколько точны оказались подсчёты, помогли сами пользователи, которые играли на сайте в пасьянс Косынка.

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

Внимание: добавлять комментарии могут только зарегистрированные пользователи.