"fc-solve [options] board_file\n"

+"If board_file is - or unspecified reads standard input\n"

+" display the default help screen\n"

+" display the summary help screen\n"

+" display the version number of the components\n"

+" display the iteration number and depth in every state that is checked\n"

+" also output the state in every state that is checked\n"

+"-p --parseable-output\n"

+" Output the states in a format that is friendly to perl, grep and\n"

+"-c --canonized-order-output\n"

+" Output the stacks and freecells according to their canonic order.\n"

+" (That means that stacks and freecells won't retain their place.)\n"

+"-t --display-10-as-t\n"

+" Display the card 10 as a capital T instead of \"10\".\n"

+" Display the moves instead of the intermediate states.\n"

+"-sam --display-states-and-moves \n"

+" Display both intermediate states and moves.\n"

+"-sn --standard-notation\n"

+" Display the moves in standard (non-verbose) notation.\n"

+" (Applicable only if -m was specified)\n"

+"-snx --standard-notation-extended\n"

+" Display the moves in extended standard notation while specifying the\n"

+" number of cards moved if applicable\n"

+"-pi --display-parent-iter \n"

+" Display the index of the parent iteration of each state in the\n"

+"--freecells-num [Freecells\' Number]\n"

+" The number of freecells present in the board.\n"

+"--stacks-num [Stacks\' Number]\n"

+" The number of stacks present in the board.\n"

+"--decks-num [Decks\' Number]\n"

+" The number of decks in the board.\n"

+"--sequences-are-built-by {suit|alternate_color|rank}\n"

+" Specifies the type of sequence\n"

+"--sequence-move {limited|unlimited}\n"

+" Specifies whether the sequence move is limited by the number of\n"

+" freecells or vacant stacks or not.\n"

+"--empty-stacks-filled-by {kings|none|all}\n"

+" Specifies which cards can fill empty stacks.\n"

+"--game [game] --preset [game] -g [game]\n"

+" Specifies the type of game. (Implies several of the game settings\n"

+" options above.). Available presets:\n"

+" bakers_dozen - Baker\'s Dozen\n"

+" bakers_game - Baker\'s Game\n"

+" beleaguered_castle - Beleaguered Castle\n"

+" der_katz - Der Katzenschwanz\n"

+" die_schlange - Die Schlange\n"

+" eight_off - Eight Off\n"

+" forecell - Forecell\n"

+" freecell - Freecell\n"

+" good_measure - Good Measure\n"

+" ko_bakers_game - Kings\' Only Baker\'s Game\n"

+" relaxed_freecell - Relaxed Freecell\n"

+" relaxed_seahaven - Relaxed Seahaven Towers\n"

+" seahaven - Seahaven Towers\n"

+" simple_simon - Simple Simon\n"

+" streets_and_alleys - Streets and Alleys\n"

+"-md [depth] --max-depth [depth] \n"

+" Specify a maximal search depth for the solution process.\n"

+"-mi [iter_num] --max-iters [iter_num] \n"

+" Specify a maximal number of iterations number.\n"

+"-mss [states_num] --max-stored-states [states_num] \n"

+" Specify the maximal number of states stored in memory.\n"

+"-to [tests_order] --tests-order [tests_order] \n"

+" Specify a test order string. Each test is represented by one character.\n"

+" '0' - put top stack cards in the foundations.\n"

+" '1' - put freecell cards in the foundations.\n"

+" '2' - put freecell cards on top of stacks.\n"

+" '3' - put non-top stack cards in the foundations.\n"

+" '4' - move stack cards to different stacks.\n"

+" '5' - move stack cards to a parent card on the same stack.\n"

+" '6' - move sequences of cards onto free stacks.\n"

+" '7' - put freecell cards on empty stacks.\n"

+" '8' - move cards to a different parent.\n"

+" '9' - empty an entire stack into the freecells.\n"

+" Atomic Freecell Tests:\n"

+" 'A' - move a stack card to an empty stack.\n"

+" 'B' - move a stack card to a parent on a different stack.\n"

+" 'C' - move a stack card to a freecell.\n"

+" 'D' - move a freecel card to a parent.\n"

+" 'E' - move a freecel card to an empty stack.\n"

+" Simple Simon Tests:\n"

+" 'a' - move a full sequence to the foundations.\n"

+" 'b' - move a sequence to a true parent of his.\n"

+" 'c' - move a whole stack sequence to a false parent (in order to\n"

+" 'd' - move a sequence to a true parent that has some cards above it.\n"

+" 'e' - move a sequence with some cards above it to a true parent.\n"

+" 'f' - move a sequence with a junk sequence above it to a true parent\n"

+" that has some cards above it.\n"

+" 'g' - move a whole stack sequence to a false parent which has some\n"

+" 'h' - move a sequence to a parent on the same stack.\n"

+" Tests are grouped with parenthesis or square brackets. Each group\n"

+" will be randomized as a whole by the random-dfs scan.\n"

+"-me [solving_method] --method [solving_method]\n"

+" Specify a solving method. Available methods are:\n"

+" \"bfs\" - Breadth-First Search\n"

+" \"dfs\" - Depth-First Search (default)\n"

+" \"random-dfs\" - A randomized DFS\n"

+" \"soft-dfs\" - \"Soft\" DFS\n"

+"-asw [A* Weights] --a-star-weight [A* Weights]\n"

+" Specify weights for the A* scan, assuming it is used. The parameter\n"

+" should be a comma-separated list of numbers, each one is proportional\n"

+" to the weight of its corresponding test.\n"

+" The numbers are, in order:\n"

+" 1. The number of cards out.\n"

+" 2. The maximal sequence move.\n"

+" 3. The number of cards under sequences.\n"

+" 4. The length of the sequences which are found over renegade cards.\n"

+" 5. The depth of the board in the solution.\n"

+" Set the seed for the random number generator used by the\n"

+" \"random-dfs\" scan.\n"

+"-nst --next-soft-thread\n"

+" Move to the next Soft-Thread. I.e: input another scan to run in\n"

+"-step [step iterations] --soft-thread-step [step iterations]\n"

+" Set the number of iterations in the step of the current soft-thread.\n"

+"-nht --next-hard-thread\n"

+" Move to the next Hard-Thread. This is a new group of scans to run\n"

+" in their own system thread (assuming the executable was compiled with\n"

+" Set the name of the soft-thread.\n"

+"--prelude [prelude_string]\n"

+" Set the prelude string of the hard thread. A prelude is a static\n"

+" sequence of iterations quotas that are executed at the beginning of\n"

+" the search. The format is a list of [Limit]@[Soft-Thread Name]\n"

+" delimited by commas.\n"

+" Move to the next distinct solver instance. This is a separate scan\n"

+" which would run only if the previous ones returned an unsolvable\n"

+"-opt --optimize-solution\n"

+" Try and optimize the solution for a small number of moves.\n"

+"-opt-to --optimization-tests-order\n"

+" The test order of the optimization scan.\n"

+" Reparent states that have a larger depth than that of the state\n"

+" from which they were reached a posteriori.\n"

+" If --reparent-states is enabled, then explictly calculate the real\n"

+" depth of a state by tracing its path to the initial state\n"

+"--scans-synergy {none|dead-end-marks}\n"

+" Specifies the cooperation between the scans.\n"

+" Reset the program to its initial, unconfigured state.\n"

+"--read-from-file [{num_skip},]filename\n"

+" Reads configuration parameter with the file while skipping num_skip\n"

+" arguments from the beginning.\n"

+"-l [configuration] --load-config [configuration]\n"

+" Reads the configuration [configruration] and configures the solver\n"

+"SIGUSR1 - Prints the number of states that were checked so far to stderr.\n"

+"SIGUSR2 SIGUSR1 - Turns iteration output on/off.\n"

+"SIGUSR2 SIGUSR2 SIGUSR1 - Turns iteration's state output on/off.\n"

+"Freecell Solver was written by Shlomi Fish.\n"

+"Homepage: http://fc-solve.berlios.de/\n"

+"Send comments and suggestions to http://www.shlomifish.org/me/contact-me/\n"

+"The environment variable FREECELL_SOLVER_DEFAULT_HELP sets the default help\n"

+"screen. The name of the help screen is the same name as its \"--help-\" flag\n"

+"but without the preceding \"--help-\". Type:\n"

+" fc-solve --help-summary\n"

+"for the available help screens.\n"

+"Refer to your system's documentation for information on how to set environment\n"

/* Win32 Does not have those signals */

signal(SIGUSR1, command_signal_handler);

signal(SIGUSR2, select_signal_handler);