Я разрабатываю программу для решения пасьянсов максимально возможным способом.
Игра оценивается по следующей системе очков:
10 points for moving Aces to top
9 points for moving 2s to top
8 points for moving 3s to top
7 points for moving 4s to top
6 points for moving 5s to top
5 points for moving 6s to top
4 points for moving 7s to top
3 points for moving 8s to top
2 points for moving 9s to top
1 points for moving 10s or face-cards to top
2 points for freeing a "downcard" (face-down card on the table)
2 points for moving a card from the deck to the table
-2 points deducted for moving a card from the top to the table
-20 points deducted for flipping over the deck
Putting a card back to the top after moving it from the top to the table does not give double points.
Карты из колоды переворачиваются по одной за раз, и игрокам разрешается переворачивать колоду неограниченное количество раз (однако, вычет -20 очков по-прежнему применяется).
Я нашел различные руководства по стратегии, например Руководство по стратегии Klondike для Windows Solitaire Game , но эти руководства предназначены для настоящих игр пасьянса, в которых настольные карты неизвестны.
Я пытаюсь создать алгоритм для решения того, что я называю "пасьянсами" лицом вверх, где у меня есть знания о колоде до ее раздачи. Редактировать: Из статей, приведенных в ответах ниже, кажется, что эта игра была названа "вдумчивый пасьянс".
До сих пор мои идеи были следующими: какое-то грубое принуждение, когда все возможные ходы пробуются и оцениваются; простой алгоритм, который смотрит на каждый столбец индивидуально и пытается "лучший" ход, который он может; и, наконец, какой-то алгоритм, похожий на поиск пути, где каждый ход оценивается и определяется лучший «путь».
Проблема с грубым принуждением состоит в том, что это займет вечность (буквально), поскольку вы можете повторять бесконечные движения. С помощью простого алгоритма я не мог делать хитрые вещи, такие как перестановка двух столбцов, чтобы поместить все сердца и булавы (например), чтобы освободить одинокие 8 сердец. Из того, что я вижу, поиск пути будет работать, но я потерян в том, как будет работать такая реализация.