Klondike (Patience) Solitaire Solver that finds minimal length solutions.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.gitignore
Card.cpp
Card.h
HashMap.h
KlondikeSolver.cpp
LICENSE
Makefile
Move.cpp
Move.h
Pile.cpp
Pile.h
README.txt
Random.cpp
Random.h
Solitaire.cpp
Solitaire.h
Statistics.txt
TestDeals.txt
display-solution
from-fc-solve-board-gen
solution-wrapper

README.txt

Klondike-Solver
===============

Klondike (Patience) Solver that finds minimal length solutions.

KlondikeSolver [/DC] [/D] [/G] [/O] [/M] [/S] [/F] [/R] [FilePath]

/DRAW # [/DC #] - Sets the draw count to use when solving. Defaults to 1.

/DECK str [/D str] - Loads the deck specified by the string.

/GAME # [/G #] - Loads a random game with seed #.

FilePath - Solves deals specified in the file.

/R - Replays solution to output if one is found.

/MOVES /MVS - Will output a compact list of moves made when a solution is found.

/MULTI # [/M #] - Uses # threads to solve deals. Only works when solving minimally.

/OUT # [/O #] - Sets the output method of the solver. Defaults to 0, 1 for Pysol, 2 for minimal output.

/STATES # [/S #] - Sets the maximum number of game states to evaluate before terminating. Defaults to 5,000,000.

/FAST [/F] - Run the solver in a best attempt mode, which is faster, but not guaranteed to give minimal solution or one at all.

========================
NOTES:

The Deck format is in the order a deck of cards is dealt to the board.  Each card is represented by a 3 digit long numerical character.  The first two digits are the value of the card:
01 for an ace, 02 for a 2, 11 for a jack, 13 for a king.  The third digit represents the suit. 1 for clubs, 2 for diamonds, 3 for hearts, 4 for spades.
Therefore an Ace of spaces is 014.  A 4 of diamonds is represented by 042.
You can more quickly convert a deck of cards by using the createadeckstring.xls excel sheet.

When using the /MOVES command, the program will produce the moves neccesary such that you could execute the winning condition.  The codex for moves is as follows:
	DR# is a draw move that is done # number of times. ie) DR2 means draw twice, if draw count > 1 it is still DR2.
	NEW is to represent the moving of cards from the Waste pile back to the stock pile. A New round.
	F# means to flip the card on tableau pile #. 
	XY means to move the top card from pile X to pile Y.
		X will be 1 through 7, W for Waste, or a foundation suit character. 'C'lubs, 'D'iamonds, 'S'pades, 'H'earts
		Y will be 1 through 7 or the foundation suit character.
	XY-# is the same as above except you are moving # number of cards from X to Y.