1FC-SOLVE(6)                                                        FC-SOLVE(6)
2
3
4

NAME

6       fc-solve - automated solver for Freecell and related Solitiare variants
7

INTRODUCTION

9       This is Freecell Solver version 5.16.x, a program that automatically
10       solves most layouts of Freecell, and similar Solitaire variants as well
11       as those of Simple Simon.
12
13       Freecell Solver is distributed under the MIT/Expat License (
14       http://en.wikipedia.org/wiki/MIT_License ), a free, permissive,
15       open-source license.
16
17       Note that the Freecell Solver source and Win32 binary distributions do
18       not provide a graphical user-interface (GUI) and are primarily meant to
19       be used by Solitaire researchers and software developers. If you’re
20       looking for a suitable GUI based on Freecell Solver, see our links at:
21
22       http://fc-solve.shlomifish.org/links.html#front_ends
23
24       I hope you’ll enjoy using Freecell Solver, and make the best of it.
25
26        — Shlomi Fish ( http://www.shlomifish.org/ )
27

BUILDING

29       Read the file INSTALL.txt for information on how to do that.
30

USAGE

32       The program is called "fc-solve". You invoke it like this:
33
34           fc-solve board_file
35
36       board_file is the filename with a valid Freecell startup board. The
37       file is built as follows:
38
39       It has the 8 Freecell stacks.
40
41       Each stack contains its cards separated by a whitespace and terminated
42       with a newline character( it’s important that the last stack will also
43       be terminated with a newline !). The cards in the line are ordered from
44       the topmost card (= the card right on the virtual table and the one
45       with the most cards placed on it) in the left, to the bottommost card
46       in the right (= the card with no other cards placed on it).
47
48       A card string contains the rank of the card followed by its suit. The
49       card number is one of: A,1,2,3,4,5,6,7,8,9,T,J,Q,K. Alternatively, 10
50       can be used instead of T, but using that is discouraged and is only
51       supported for backward compatibility. The card suit is one of:  H,S,D,C
52       (standing for Hearts, Spades, Diamonds and Clubs respectively).
53
54       Here is an example board: (PySol/Microsoft board No. 24)
55
56           4C 2C 9C 8C QS 4S 2H
57           5H QH 3C AC 3H 4H QD
58           QC 9S 6H 9H 3S KS 3D
59           5D 2S JC 5C JH 6D AS
60           2D KD TH TC TD 8D
61           7H JS KH TS KC 7C
62           AH 5S 6S AD 8H JD
63           7S 6C 7D 4D 8S 9D
64
65       Visually, it appears as this:
66
67       [Freecell Deal No. 24]
68
69       As can be seen, the four of clubs (4C), five of hearts (5H), etc. are
70       at the bottom of the stacks and the start of the lines in the board
71       input.
72
73       And another one: (PySol board No. 198246790)
74
75           KD JH 5H 7D 9H KC 9D
76           3H JD 5D 8H QH 7H 2D
77           4D 3S QC 3C 6S QS KS
78           TC 9S 6D 9C QD 8S TD
79           TS 8C 7S TH 2C AS
80           8D AC AH 4H JC 4C
81           6H 7C 4S 5S 5C JS
82           AD KH 6C 2H 3D 2S
83
84       Starting from Freecell Solver 3.14.x, a stack can also start with a
85       leading colon (":"). This is to allow input from states as output by
86       Freecell Solver using the -p option.
87
88       You can specify the contents of the freecells by prefixing the line
89       with "FC:" or with "Freecells:". For example:
90
91           FC: 3H QC
92
93       will specify that the cards 3 of hearts and queen of clubs are present
94       in the freecells. To specify an empty freecell use a "-" as its
95       designator.
96
97       If there’s another "FC:" line, the previous line will be overridden.
98
99       You can specify the contents of the foundations by prefixing the line
100       with "Founds:" or with "Foundations:" and then using a format as
101       follows:
102
103           Founds: H-5 C-A S-0 D-K
104
105       Hence, the suit ID followed by a dash followed by the card number in
106       the foundation. A suit that is not present will be assumed to be 0.
107       Again, if there’s more than one line like that, then the previous lines
108       will be ignored and overridden.
109
110       The program will stop processing the input as soon as it read 8 lines
111       of standard stacks. Therefore, it is recommended that the foundations
112       and freecells lines will come at the beginning of the file.
113
114       The program will process the board and try to solve it. If it succeeds
115       it will output the states from the initial board to its final solution
116       to the standard output. If it fails, it will notify it.
117
118       For information about the various command-line switches that Freecell
119       Solver accepts, read the USAGE.txt file in this directory.
120
121       To solve Simple Simon boards append --game simple_simon right after the
122       "fc-solve" program name.
123

THE BOARD GENERATION PROGRAMS

125       Several programs which can generate the initial boards of various
126       Freecell implementations can be found in the "board_gen/"
127       sub-directory. Read the README.txt file there for details on how they
128       can be compiled and used.
129
130       In any case, they can save you the time of inputting the board
131       yourself.
132

SOME COMPLETE EXAMPLES FOR LAYOUTS

134       A layout in the middle of the MS Freecell deal No. 109 solution:
135
136           Foundations: H-6 C-9 D-2 S-0
137           Freecells:  QS  3S  2S  KD
138           : 8H 3D
139           : KS QD JC
140           : AS 8D TD 7D JH TS 9D
141           : 7S 6D
142           : 5S
143           : KH QC JD TC 9H 8S 7H 6S 5D 4S
144           : KC QH JS TH 9S
145           : 4D
146
147       Similar, but with an empty Freecell:
148
149           Foundations: H-6 C-9 D-2 S-0
150           Freecells:  QS  3S  -  KD
151           : 8H 3D 2S
152           : KS QD JC
153           : AS 8D TD 7D JH TS 9D
154           : 7S 6D
155           : 5S
156           : KH QC JD TC 9H 8S 7H 6S 5D 4S
157           : KC QH JS TH 9S
158           : 4D
159
160       Likewise, only without leading colons where unnecessary:
161
162           Foundations: H-6 C-9 D-2 S-0
163           Freecells:  QS  3S  -  KD
164           8H 3D 2S
165           KS QD JC
166           AS 8D TD 7D JH TS 9D
167           7S 6D
168           5S
169           KH QC JD TC 9H 8S 7H 6S 5D 4S
170           KC QH JS TH 9S
171           4D
172

HOW TO READ THE SOLUTIONS

174       The file USAGE.txt covers all of Freecell Solver’s command line
175       options, but it may be too exhaustive for casual users. As a result,
176       here is a shorter tutorial. First of all whenever invoking fc-solve one
177       should add the flags -p -t -sam -sel which will make the solution
178       easier to understand. Then, assuming the board could be successfully
179       solved, one will be given the layouts in the solution (in the format
180       given above) vis-a-vis with the moves as the string. Note that the
181       indexes of the resources given in the moves are 0-based rather than the
182       more natural 1-based notation.
183

THE PROGRAMS

185       Most command-line switches have two versions:
186
187       ·   A short POSIX one which is a dash followed by a letter or a few.
188           This option must come standalone and not clustered:  -sam is not
189           equivalent to specifying -s, -a and -m.
190
191       ·   A long switch which is two dashes followed by the command string.
192           For example: --prelude, --st-name.
193
194       If command line arguments have parameters, they are followed in
195       separate parameters - Freecell Solver won’t recognise a parameter
196       preceded by an equal sign. --st-name=myname is invalid, while --st-name
197       myname is OK.
198
199   The Scope of the Options
200       The scope of the options is mentioned along with them. Options can be:
201
202        1. Global - affects all the soft-threads.
203
204        2. Instance-specific - affects an instance (separated by the
205           --next-instance option below). Each instance consists of several
206           flares.
207
208        3. Flare-specific - affects the current flare (separated by the
209           --next-flare option below. Each flare consists of several hard
210           threads.
211
212        4. Hard-thread-specific - affects the current hard thread (separated
213           by the --next-hard-thread option below. Each hard thread consists
214           of several soft threads.
215
216        5. Soft-thread-specific - affects only the current soft thread.
217

GETTING HELP

219   -h , --help
220       Global
221
222       This option displays a help text on the screen. This help gives a help
223       display summarizing some ways to use the program and get more help.
224
225   --version
226       Global
227
228       This option displays the version number of the components that make the
229       executable (and then exits).
230
231   --help-configs
232       Global
233
234       Some help on the various configurations of Freecell Solver.
235
236   --help-options
237       Global
238
239       A help screen giving an overview of all available options.
240
241   --help-real-help
242       Global
243
244       Explains how to change the default help screen to a different one.
245
246   --help-short-sol
247       Global
248
249       How to generate shorter solutions.
250
251   --help-summary
252       Global
253
254       The default help screen.
255

OUTPUT OPTIONS

257   -p , --parseable-output
258       Global
259
260       This option will display the columns in a format that can be more
261       easily manipulated by text-processing programs such as grep or perl.
262       Namely, The freecells will be displayed in one line, and the
263       foundations in a separate line. Plus, Each column will be displayed
264       horizontally, in its own line, while beginning with a :.
265
266   -t , --display-10-as-t
267       Global
268
269       This option will display the 10 cards as a capital T instead of a 10.
270       Thus, the cards will be more properly aligned.
271
272       For example, here is a command line using -p and -t:
273
274           $ pi-make-microsoft-freecell-board 24 | fc-solve -p -t
275           -=-=-=-=-=-=-=-=-=-=-=-
276
277           Foundations: H-0 C-0 D-0 S-0
278           Freecells:
279           : 4C 2C 9C 8C QS 4S 2H
280           : 5H QH 3C AC 3H 4H QD
281           : QC 9S 6H 9H 3S KS 3D
282           : 5D 2S JC 5C JH 6D AS
283           : 2D KD TH TC TD 8D
284           : 7H JS KH TS KC 7C
285           : AH 5S 6S AD 8H JD
286           : 7S 6C 7D 4D 8S 9D
287
288
289           ====================
290
291           Foundations: H-0 C-0 D-0 S-A
292           Freecells:
293           : 4C 2C 9C 8C QS 4S 2H
294           : 5H QH 3C AC 3H 4H QD
295           : QC 9S 6H 9H 3S KS 3D
296           : 5D 2S JC 5C JH 6D
297           : 2D KD TH TC TD 8D
298           : 7H JS KH TS KC 7C
299           : AH 5S 6S AD 8H JD
300           : 7S 6C 7D 4D 8S 9D
301
302   -c , --canonized-order-output
303       Global
304
305       Freecell Solver re-arranges the stacks and freecells in a given state
306       according to their first card. It keeps their actual position in a
307       separate place, but internally it uses their canonized place. Use this
308       option, if you want Freecell Solver to display them in that order. One
309       should be warned that that way the place of a given stack in the board
310       will not be preserved throughout the solution.
311
312   -m , --display-moves
313       Global
314
315       This option will display the moves instead of the intermediate states.
316       Each move will be displayed in a separate line, in a format that is
317       human-readable, but that can also be parsed and analyzed by a computer
318       program with some effort on the programmer’s part.
319
320       For example:
321
322           $ pi-make-microsoft-freecell-board 24 | fc-solve -m | head -30
323           -=-=-=-=-=-=-=-=-=-=-=-
324
325           Move a card from stack 3 to the foundations
326
327           ====================
328
329           Move a card from stack 6 to freecell 0
330
331           ====================
332
333           Move a card from stack 6 to freecell 1
334
335   -sn , --standard-notation
336       Global
337
338       This option will display the moves in standard notation in which every
339       move consists of two characters and there are ten moves in a line.
340       Naturally, this option will only become apparent if the display moves
341       is specified. (it does not implicitly specify it, though).
342
343       For more information regarding standard notation refer to the following
344       web-page:
345
346       http://home.earthlink.net/~fomalhaut/freecell.html
347
348   -snx , --standard-notation-extended
349       Global
350
351       This option is similar to the previous one, except that when a sequence
352       move is made to an empty stack with more than one card in the sequence,
353       the move will be followed with "v" and the number of cards moved in
354       hexadecimal.
355
356   -sam , --display-states-and-moves
357       Global
358
359       This option will display both the intermediate states and the moves
360       that are needed to move from one to another. The standard notation
361       option applies to it to.
362
363           $ pi-make-microsoft-freecell-board 24 | fc-solve -sam -p -t | head -50
364           -=-=-=-=-=-=-=-=-=-=-=-
365
366           Foundations: H-0 C-0 D-0 S-0
367           Freecells:
368           : 4C 2C 9C 8C QS 4S 2H
369           : 5H QH 3C AC 3H 4H QD
370           : QC 9S 6H 9H 3S KS 3D
371           : 5D 2S JC 5C JH 6D AS
372           : 2D KD TH TC TD 8D
373           : 7H JS KH TS KC 7C
374           : AH 5S 6S AD 8H JD
375           : 7S 6C 7D 4D 8S 9D
376
377
378           ====================
379
380           Move a card from stack 3 to the foundations
381
382           Foundations: H-0 C-0 D-0 S-A
383           Freecells:
384           : 4C 2C 9C 8C QS 4S 2H
385           : 5H QH 3C AC 3H 4H QD
386           : QC 9S 6H 9H 3S KS 3D
387           : 5D 2S JC 5C JH 6D
388           : 2D KD TH TC TD 8D
389           : 7H JS KH TS KC 7C
390           : AH 5S 6S AD 8H JD
391           : 7S 6C 7D 4D 8S 9D
392
393
394           ====================
395
396           Move a card from stack 6 to freecell 0
397
398           Foundations: H-0 C-0 D-0 S-A
399           Freecells:  JD
400           : 4C 2C 9C 8C QS 4S 2H
401           : 5H QH 3C AC 3H 4H QD
402           : QC 9S 6H 9H 3S KS 3D
403           : 5D 2S JC 5C JH 6D
404           : 2D KD TH TC TD 8D
405           : 7H JS KH TS KC 7C
406           : AH 5S 6S AD 8H
407           : 7S 6C 7D 4D 8S 9D
408
409
410           ====================
411
412           Move a card from stack 6 to freecell 1
413
414   -pi , --display-parent-iter
415       Global
416
417       This option (assuming the -s and -i options are specified) will also
418       display the iteration index of the state from which the current state
419       was derived. This is especially useful for BeFS (so-called a-star) or
420       BFS scans.
421
422   -o [filename] , --output [filename]
423       Global
424
425       Outputs to a file instead of standard output. So for example:
426
427           $ fc-solve -o 2405.solution.txt 2405.board
428
429       Will put the solution to the file in 2405.board in the file
430       2405.solution.txt . This will also be done using:
431
432           $ fc-solve --output 2405.solution.txt 2405.board
433
434   -sel , --show-exceeded-limits
435       Global
436
437       This option will display a different status message ("Iterations count
438       exceeded.") instead of "I could not solve this game." in case the
439       iterations count was exceeded. This is recommended because the "I could
440       not solve this game." message can also mean that the entire game graph
441       was fully traversed (within the limitations of the specified moves'
442       types) and so no solution is possible.
443
444       This option is not the default, to retain compatibility with previous
445       versions of Freecell Solver, and was added in version 3.12.0 of
446       fc-solve.
447
448   -hoi , --hint-on-intractable
449       Global
450
451       Presents the moves to the intermediate reached state, if the maximal
452       number of iterations was reached without a conclusion (=
453       "intractable").
454
455       This option is not the default, to retain compatibility with previous
456       versions of Freecell Solver, and was added in version 4.20.0 of
457       fc-solve.
458

GAME VARIANTS OPTIONS

460   --freecells-num [Number of Freecells]
461       Global
462
463       This option specifies the number of freecells which are available to
464       the program. Freecell Solver can use any number of freecells as long as
465       it does not exceed its maximal number.
466
467       This maximum is hard-coded into the program, and can be specified at
468       compile-time by modifying the file config.h. See the file INSTALL (or
469       alternatively INSTALL.html) for details.
470
471   --stacks-num [Number of Stacks]
472       Global
473
474       This option specifies the number of stacks present in the board. Again,
475       this number cannot exceed the maximal number of stacks, which can be
476       specified in the file config.h during compile-time of Freecell Solver.
477
478   --decks-num [Number of Decks]
479       Global
480
481       This options specifies how many decks are found in the board. This
482       number cannot exceed the maximal number of decks, which can be
483       specified by the Freecell Solver build system.
484
485   --sequences-are-built-by {suit|alternate_color|rank}
486       Global
487
488       This option specifies whether a card sequence is built by suit or by
489       alternate colour or by rank regardless of suit.
490
491   --sequence-move {limited|unlimited}
492       Global
493
494       This option specifies whether the sequence move is limited by the
495       number of freecells or vacant stacks or not.
496
497   --empty-stacks-filled-by {kings|none|all}
498       Global
499
500       Specifies which cards can fill an empty stack.
501
502   --game [game] , --preset [game] , -g [game]
503       Global
504
505       Specifies the type of game. Each preset implies several of the settings
506       options above and sometimes even the moves’ order below. The default
507       configuration is for Freecell.
508
509       Available presets:
510
511       ┌───────────────────┬──────────────────────────┐
512       │                   │                          │
513       │bakers_dozen       │ Baker’s Dozen            │
514       ├───────────────────┼──────────────────────────┤
515       │                   │                          │
516       │bakers_game        │ Baker’s Game             │
517       ├───────────────────┼──────────────────────────┤
518       │                   │                          │
519       │beleaguered_castle │ Beleaguered Castle       │
520       ├───────────────────┼──────────────────────────┤
521       │                   │                          │
522       │citadel            │ Citadel                  │
523       ├───────────────────┼──────────────────────────┤
524       │                   │                          │
525       │cruel              │ Cruel                    │
526       ├───────────────────┼──────────────────────────┤
527       │                   │                          │
528       │der_katz           │ Der Katzenschwanz        │
529       ├───────────────────┼──────────────────────────┤
530       │                   │                          │
531       │die_schlange       │ Die Schlange             │
532       ├───────────────────┼──────────────────────────┤
533       │                   │                          │
534       │eight_off          │ Eight Off                │
535       ├───────────────────┼──────────────────────────┤
536       │                   │                          │
537       │fan                │ Fan                      │
538       ├───────────────────┼──────────────────────────┤
539       │                   │                          │
540       │forecell           │ Forecell                 │
541       ├───────────────────┼──────────────────────────┤
542       │                   │                          │
543       │freecell           │ Freecell (default)       │
544       ├───────────────────┼──────────────────────────┤
545       │                   │                          │
546       │good_measure       │ Good Measure             │
547       ├───────────────────┼──────────────────────────┤
548       │                   │                          │
549       │ko_bakers_game     │ Kings' Only Baker’s Game │
550       ├───────────────────┼──────────────────────────┤
551       │                   │                          │
552       │relaxed_freecell   │ Relaxed Freecell         │
553       ├───────────────────┼──────────────────────────┤
554       │                   │                          │
555       │relaxed_sehaven    │ Relaxed Seahaven Towers  │
556       ├───────────────────┼──────────────────────────┤
557       │                   │                          │
558       │seahaven           │ Seahaven Towers          │
559       ├───────────────────┼──────────────────────────┤
560       │                   │                          │
561       │simple_simon       │ Simple Simon             │
562       ├───────────────────┼──────────────────────────┤
563       │                   │                          │
564       │streets_and_alleys │ Streets and Alleys       │
565       └───────────────────┴──────────────────────────┘
566
567       Note: in order to solve Der Katzenschwanz and Die Schlange I recommend
568       you compile Freecell Solver with the INDIRECT_STACK_STATES option, or
569       else it will consume much more memory. For details consult the file
570       INSTALL.
571
572   Examples
573       To solve PySol Eight Off game No. 1,000 type:
574
575           $ make_pysol_freecell_board.py 1000 eight_off | fc-solve -g eight_off
576
577       To solve PySol Baker’s Game No. 50, type:
578
579           $ make_pysol_freecell_board.py 50 bakers_game | fc-solve -g bakers_game
580
581       If you want to solve a game similar to Freecell only with sequences
582       built by rank, and unlimited sequence move, do:
583
584           $ fc-solve -g freecell --sequences-are-built-by rank --sequence-move unlimited
585

SOLVING ALGORITHM OPTIONS

587   -mi [Iterations num] , --max-iters [Iterations num]
588       Global
589
590       This parameter limits the maximal number of states to check. This will
591       give a rough limit on the time spent to solve a given board.
592
593   -md [Maximal depth] , --max-depth [Maximal depth]
594       Not currently implemented
595
596       Freecell Solver recurses into the solution. This parameter specifies a
597       maximal recursion depth. Generally speaking, it’s not a good idea to
598       set it, because that way several important intermediate states may
599       become inaccessible.
600
601   -mss [num] , --max-stored-states [num]
602       Global
603
604       Limits the number of the states stored by the program in the computer’s
605       memory. This differs from the maximal number of iterations in the
606       sense, that it is possible that a stored state was not checked yet.
607
608   -tmss [num] , --trim-max-stored-states [num]
609       Instance-wide
610
611       This also limits the number of trimmed stored states, but this time
612       will try to trim them once the limit has been reached (which is time
613       consuming and may cause states to be traversed again in the future).
614
615   -to [Moves’ Order] , --tests-order [Moves Order]
616       Soft-thread-specific
617
618       This option specifies the order in which Freecell Solver will try the
619       different types of moves (formerly termed "tests") that it can perform.
620       Each move is specified by one character, and they are performed in the
621       order in which they appear in the parameter string. You can omit moves
622       by not including their corresponding characters in the string.
623
624       The moves along with their characters are:
625
626       ┌───────────────────────┬────────────────────────────┐
627       │                       │                            │
628       │Freecell Moves:        │                            │
629       ├───────────────────────┼────────────────────────────┤
630       │                       │                            │
6310                      │ put top stack cards in the │
632       │                       │ foundations.               │
633       ├───────────────────────┼────────────────────────────┤
634       │                       │                            │
6351                      │ put freecell cards in the  │
636       │                       │ foundations.               │
637       ├───────────────────────┼────────────────────────────┤
638       │                       │                            │
6392                      │ put freecell cards on top  │
640       │                       │ of stacks.                 │
641       ├───────────────────────┼────────────────────────────┤
642       │                       │                            │
6433                      │ put non-top stack cards in │
644       │                       │ the foundations.           │
645       ├───────────────────────┼────────────────────────────┤
646       │                       │                            │
6474                      │ move stack cards to        │
648       │                       │ different stacks.          │
649       ├───────────────────────┼────────────────────────────┤
650       │                       │                            │
6515                      │ move stack cards to a      │
652       │                       │ parent card on the same    │
653       │                       │ stack.                     │
654       ├───────────────────────┼────────────────────────────┤
655       │                       │                            │
6566                      │ move sequences of cards    │
657       │                       │ onto free stacks.          │
658       ├───────────────────────┼────────────────────────────┤
659       │                       │                            │
6607                      │ put freecell cards on      │
661       │                       │ empty stacks.              │
662       ├───────────────────────┼────────────────────────────┤
663       │                       │                            │
6648                      │ move cards to a different  │
665       │                       │ parent.                    │
666       ├───────────────────────┼────────────────────────────┤
667       │                       │                            │
6689                      │ empty an entire stack into │
669       │                       │ the freecells.             │
670       ├───────────────────────┼────────────────────────────┤
671       │                       │                            │
672j                      │ put freecell cards on      │
673       │                       │ empty stacks and right     │
674       │                       │ away put cards on top.     │
675       ├───────────────────────┼────────────────────────────┤
676       │                       │                            │
677       │Atomic Freecell Moves: │                            │
678       ├───────────────────────┼────────────────────────────┤
679       │                       │                            │
680A                      │ move a stack card to an    │
681       │                       │ empty stack.               │
682       ├───────────────────────┼────────────────────────────┤
683       │                       │                            │
684B                      │ move a stack card to a     │
685       │                       │ parent on a different      │
686       │                       │ stack.                     │
687       ├───────────────────────┼────────────────────────────┤
688       │                       │                            │
689C                      │ move a stack card to a     │
690       │                       │ freecell.                  │
691       ├───────────────────────┼────────────────────────────┤
692       │                       │                            │
693D                      │ move a freecell card to a  │
694       │                       │ parent.                    │
695       ├───────────────────────┼────────────────────────────┤
696       │                       │                            │
697E                      │ move a freecell card to an │
698       │                       │ empty stack.               │
699       ├───────────────────────┼────────────────────────────┤
700       │                       │                            │
701       │Simple Simon Moves:    │                            │
702       ├───────────────────────┼────────────────────────────┤
703       │                       │                            │
704a                      │ move a full sequence to    │
705       │                       │ the foundations.           │
706       ├───────────────────────┼────────────────────────────┤
707       │                       │                            │
708b                      │ move a sequence to a true  │
709       │                       │ parent of his.             │
710       ├───────────────────────┼────────────────────────────┤
711       │                       │                            │
712c                      │ move a whole stack         │
713       │                       │ sequence to a false parent │
714       │                       │ (in order to clear the     │
715       │                       │ stack)                     │
716       ├───────────────────────┼────────────────────────────┤
717       │                       │                            │
718d                      │ move a sequence to a true  │
719       │                       │ parent that has some cards │
720       │                       │ above it.                  │
721       ├───────────────────────┼────────────────────────────┤
722       │                       │                            │
723e                      │ move a sequence with some  │
724       │                       │ cards above it to a true   │
725       │                       │ parent.                    │
726       ├───────────────────────┼────────────────────────────┤
727       │                       │                            │
728f                      │ move a sequence with a     │
729       │                       │ junk sequence above it to  │
730       │                       │ a true parent that has     │
731       │                       │ some cards above it.       │
732       ├───────────────────────┼────────────────────────────┤
733       │                       │                            │
734g                      │ move a whole stack         │
735       │                       │ sequence to a false parent │
736       │                       │ which has some cards above │
737       │                       │ it.                        │
738       ├───────────────────────┼────────────────────────────┤
739       │                       │                            │
740h                      │ move a sequence to a       │
741       │                       │ parent on the same stack.  │
742       ├───────────────────────┼────────────────────────────┤
743       │                       │                            │
744i                      │ move any sequence to a     │
745       │                       │ false parent (using it may │
746       │                       │ make the solution much     │
747       │                       │ slower).                   │
748       └───────────────────────┴────────────────────────────┘
749
750       Manipulating the moves order can be very helpful to the quick solution
751       of a given board. If you found that a certain board cannot be solved in
752       after a long time or in a certain maximal number of iterations, you
753       should try different moves' orders. Usually, one can find a moves order
754       that solves a board very quickly.
755
756       Note that this moves order usually makes sense only for the Soft-DFS
757       and Random DFS scans (see the --method option below).
758
759       Also note that Freecell moves are not suitable for solving Simple Simon
760       games and Simple Simon moves are not suitable for solving anything
761       except Simple Simon.
762
763       Moves can be grouped together into groups using parenthesis (e.g:
764       "(0123)") or square brackets ("[012][3456789]"). Such grouping is only
765       relevant to the Random DFS scan (see below). A group may optionally be
766       followed by the equal sign "=" and by an ordering specifier. If one
767       specifies "=rand()", then the derived states will be randomised based
768       on the seed (which is what happens if no equal sign is specified). On
769       the other hand, if one specifies something like "=asw(5,0,5,0,0,5)",
770       then the numbers inside the parentheses will be treated as weights for
771       the same ordering function used by the -asw flag (see below).
772
773   -dto2 [Min Depth],[Moves' Order] , --depth-tests-order2 [Min Depth],[Moves'
774       Order]
775       Soft-thread-specific
776
777       Sets the Moves' order starting from the minimal depth onwards. This
778       way, if a Soft-DFS scan recurses deeply into the game, it will use a
779       different moves' order.
780
781       Note that if you set the moves' order of a minimal depth of say 50,
782       then it will override all the moves' order of 50 and above. As a
783       result, it is recommended that you set the minimal depth moves order in
784       an increasing depth.
785
786       It should be noted that the -to or --tests-order option above is
787       equivalent to using this option with a minimal depth of 0.
788
789       Here are some examples:
790
791           -to 0123456789 -dto2 30,0138924567
792
793       This sets the moves' order to 0123456789 for all depths below 30 and to
794       0138924567 for all depths above it.
795
796           -to 0123457 -dto2 10,750123 -dto2 25,710235
797
798       This sets the moves' order to 0123457 for depths -9 (those below 10),
799       to 750123 for depths 10-24, and to 710235 for the depths 25 onwards.
800
801           -to 0123457 -dto2 "10,[012357]=asw(1)"
802
803       This sorts the moves starting from 10 onward based on the asw()
804       function.
805
806           -to 0123457 -dto2 "10,[012357]=rand()"
807
808       This randomises the moves from 10 onward.
809
810           -to 0123457 -dto2 "10,[012357]"
811
812       This does the same thing as the previous example.
813
814       Note : This option should be used instead of the older -dto option
815       given below which mutilates the moves order parameter and is still
816       provided for backward compatibility.
817
818   -dto [Min Depth],[Moves' Order] , --depth-tests-order [Min Depth],[Moves'
819       Order]
820       This is equivalent to specifying -dto2 [Min Depth],[Min Depth],[Moves'
821       Order] - i.e: the "[Min Depth]," string is prefixed to the given moves
822       order.
823
824       This option is provided for backward compatibility with older versions
825       of Freecell Solver.
826
827   -me [Solving Method] , --method [Solving Method]
828       Soft-thread-specific
829
830       This option specifies the solving method that will be used to solve the
831       board. Currently, the following methods are available:
832
833       ·   a-star - A Best-First-Search scan (not "A*" as it was once thought
834           to be)
835
836       ·   bfs - A Breadth-First Search (or BFS) scan
837
838       ·   dfs - A Depth-First Search (or DFS) scan
839
840       ·   random-dfs - A randomized DFS scan
841
842       ·   patsolve - uses the scan of patsolve.
843
844       ·   soft-dfs - A "soft" DFS scan
845
846       Starting from recent Freecell Solver versions there is no difference
847       between dfs and soft-dfs. In earlier versions, use of soft-dfs is
848       recommended. random-dfs is similar to soft-dfs only it determines to
849       which states to recurse into randomly. Its behaviour will differ
850       depending on the seed you supply to it. (see the "-seed" option below.)
851
852       BFS does not yield good results, and a-star has a mixed behaviour, so
853       for the time being I recommend using Soft-DFS or Random-DFS.
854
855       The Random-DFS scan processes every moves' random group, randomizes the
856       states that it found and recurses into them one by one. Standalone
857       moves that do not belong to any group, are processed in a non-random
858       manner.
859
860   -asw [BeFS Weights] , --a-star-weight [BeFS Weights]
861       Soft-thread-specific
862
863       Specify weights for the a-star (= "Best-First Search") scan, assuming
864       it is used. The parameter should be a comma-separated list of numbers,
865       each one is proportional to the weight of its corresponding test.
866
867       The numbers are, in order:
868
869        1. The number of cards out.
870
871        2. The maximal sequence move.
872
873        3. The number of cards under sequences.
874
875        4. The length of the sequences which are found over renegade cards.
876
877        5. The depth of the board in the solution.
878
879        6. The negative of the number of cards that are not placed above their
880           parents. To get the irreversibility depth, give equal weight to
881           this weight and to the number of cards out.
882
883       The default weights are respectively: {0.5, 0, 0.3, 0, 0.2, 0}
884
885   -seed [Seed Number]
886       Soft-thread-specific
887
888       Specifies a seed to be used by Freecell Solver’s internal random number
889       generator. This seed may alter the behaviour and speed of the
890       random-dfs scan.
891
892   --set-pruning [Pruning] , -sp [Pruning]
893       Soft-thread-specific
894
895       This option sets the pruning algorithm for the soft thread. Current
896       valid values are only the empty string ("") for no pruning and r:tf
897       (short for "Run: to foundations") for Horne’s rule. See:
898
899       https://groups.yahoo.com/neo/groups/fc-solve-discuss/conversations/topics/214
900
901   -opt , --optimize-solution
902       Flare-wide
903
904       This option instructs Freecell Solver to try and optimize the solution
905       path so it will have a smaller number of moves.
906
907   -opt-to [moves order] , --optimization-tests-order [moves order]
908       Flare-wide
909
910       This argument specifies the moves order for the optimization scan, in
911       case it should be different than an order that contains all the moves
912       that were used in all the normal scans.
913
914   --reparent-states
915       Flare-wide
916
917       This option specifies that states that were encountered whose depth in
918       the states graph can be improved should be reparented to the new
919       parent. This option can possibly make solutions shorter.
920
921   --calc-real-depth
922       Flare-wide
923
924       This option becomes effective only if --reparent-states is specified.
925       What it does, is explicitly calculate the depth of the state by tracing
926       its path to the initial state. This may make depth consideration more
927       accurate.
928
929   --patsolve-x-param [pos],[value]
930       Soft-thread-specific
931
932       Sets the patsolve’s scan X param (an integer) in position "pos" into
933       "value".
934
935       Examples:
936
937           --patsolve-x-param 0,5
938           --patsolve-x-param 2,100
939
940   --patsolve-y-param [pos],[value]
941       Soft-thread-specific
942
943       Sets the patsolve Y param (a floating point number) in position "pos"
944       into "value".
945
946       Examples:
947
948           --patsolve-y-param 0,0.5
949           --patsolve-y-param 1,103.2
950

RUNNING SEVERAL SCANS IN PARALLEL

952       Starting from Version 2.4.0, Freecell Solver can run several scans in
953       parallel on the same state collection. Each scan resides in its own
954       "Soft Thread". By specifying several soft threads on the command line
955       one can create use several parallel scans. Once one of the scans
956       reaches a solution, the solution will be displayed.
957
958   -nst , --next-soft-thread
959       Hard-thread-specific
960
961       This option creates a new soft-thread and makes the following
962       scan-specific options initialize it. For example:
963
964           $ fc-solve --method a-star -nst --method soft-dfs -to 0123467 myboard.txt
965
966       will run an BeFS scan and a Soft-DFS scan with a moves order of 0123467
967       on myboard.txt.
968
969   -step [Step] , --soft-thread-step [Step]
970       Soft-thread-specific
971
972       This option will set the number of iterations with which to run the
973       soft thread before switching to the next one. By specifying a larger
974       step, one can give a certain scan a longer run-time and a higher
975       priority.
976
977       Note: after some experimentation, we have concluded that the --prelude
978       option normally yields better results, but -step can be used as a
979       fallback.
980
981   -nht , --next-hard-thread
982       Flare-wide
983
984       This argument lets one initialize the next hard thread. If Freecell
985       Solver was compiled with such support, then it is possible to run each
986       hard thread in its own system thread. Each hard-thread contains one or
987       more soft threads.
988
989   --st-name [soft thread name]
990       Soft-thread-specific
991
992       This argument sets the name used to identify the current soft thread.
993       This name can later be used to construct the prelude (see below).
994
995   --prelude [\i1@st1{,\i2@st2{,\i3@st3...}}]
996       Hard-thread-specific
997
998       Sets the prelude for the hard thread. At the beginning of the search,
999       the hard thread plays a static sequence of iterations at each of the
1000       soft threads specified in the prelude, for the number of iterations
1001       specified.
1002
1003       For example, if you had three soft threads named "foo", "bar" and
1004       "rin", then the following prelude:
1005
1006           --prelude 500@foo,1590@bar,100@foo,200@rin
1007
1008       Will run 500 iterations in "foo", then 1590 in "bar", then 100 in "foo"
1009       again, and then 200 in "rin". After the prelude finishes, the hard
1010       thread would run the scans one after the other in the sequence they
1011       were defined for their step number.
1012
1013   --scans-synergy {none|dead-end-marks}
1014       Flare-wide
1015
1016       Specifies the synergy between the various scans, or how much they
1017       cooperate between themselves. none means they do not cooperate and only
1018       share the same memory resources. dead-end-marks means they try to mark
1019       states that they have withdrawn from, and states whose all their
1020       derived states are such, as "dead ends". This may or may not improve
1021       the speed of the solution.
1022
1023   -ni , --next-instance
1024       Global
1025
1026       This option allows one to run two or more separate solvers one after
1027       the other. If the first one returned an unsolvable verdict, then the
1028       second one would run and so on. One use of it is to run an atomic moves
1029       scan after a meta-moves scan, so we will always get an accurate verdict
1030       and still enjoy some of the speed benefits of the meta-moves scan.
1031
1032   -nf , --next-flare
1033       Instance-wide
1034
1035       Each instance contains several flares. Flares are various alternative
1036       scans, that are ran one after another, as specified in the
1037       --flares-plan below or defaulting to running only the first flare
1038       (which isn’t very useful). Out of all the flares that are successful in
1039       solving a board, Freecell Solver picks the one with the shortest
1040       solution.
1041
1042   --flare-name [flare name]
1043       Flare-wide
1044
1045       This is a name that identifies the flare for use in the flares' plan.
1046
1047   --flares-plan [flare plan]
1048       Instance-wide
1049
1050       This instance-wide parameter gives a plan for the flares as a big
1051       string. Here are some examples:
1052
1053           --flares-plan "RunIndef:FlareyFlare"
1054
1055       This plan will run the flare with the name FlareyFlare indefinitely,
1056       until it terminates. Once a RunIndef action is encountered, the rest of
1057       the plan is ignored.
1058
1059           --flares-plan "Run:500@MyFlare,Run:2000@FooFlare"
1060
1061       Runs MyFlare for 500 iterations and FooFlare for 2,000 iterations. Note
1062       that both flares will be run and won’t share any resources between
1063       them, and then the minimal solution out of both flares (or only those
1064       that finished ). If no flares finished, then Freecell Solver will run
1065       them both again for the same number of iterations each, until at least
1066       one finishes (or it ran out of the iterations' limit).
1067
1068           --flares-plan "Run:500@dfs,Run:1500@befs,CP:,Run:10000@funky"
1069
1070       This runs the flares identified by dfs and befs and then see if a
1071       solution was reached ("CP:" stands for "checkpoint"), and if so yield
1072       it. If both flares did not reach a solution yet, or failed to solve the
1073       board, it will run the flare funky for 10,000 iterations and yield its
1074       solution. And like the previous case, this solution will loop after it
1075       ended for as long as the no flare solved the board or the program did
1076       not run out of iterations.
1077
1078       Using checkpoints one can yield a possibly sub-optimal (as far as
1079       solution length is concerned) solution that will still solve faster
1080       than letting all the flares run.
1081
1082   --flares-choice [choice]
1083       Global
1084
1085       This dictates how to choose the winning flare based on if more than one
1086       yielded a solution. Possible options are:
1087
1088        1. --flares-choice fc_solve - the default, which picks up the
1089           solutions based on the length of the solution in Freecell Solver’s
1090           moves.
1091
1092        2. --flares-choice fcpro - picks up the shortest solution based on the
1093           number of Freecell Pro moves, while not considering implicit moves
1094           to the foundations using Horne’s Prune / Raymond Prune.
1095
1096   -fif [factor] , --flares-iters-factor [factor]
1097       Global
1098
1099       Sets a global, floating-point number, factor to multiply all the
1100       iterations counts in the flares plans. The higher it is, the longer the
1101       scans will take, but there is a greater chance more of them will
1102       succeed, and, as a result, the solution may be shorter.
1103
1104       As an example, the following:
1105
1106           --flares-plan "Run:500@MyFlare,Run:2000@FooFlare" --flares-iters-factor 2
1107
1108       Is equivalent to:
1109
1110           --flares-plan "Run:1000@MyFlare,Run:4000@FooFlare"
1111
1112       while:
1113
1114           --flares-plan "Run:500@MyFlare,Run:2000@FooFlare" --flares-iters-factor 0.5
1115
1116       Is equivalent to:
1117
1118           --flares-plan "Run:250@MyFlare,Run:1000@FooFlare"
1119
1120   --cache-limit [cache limit]
1121       Global
1122
1123       This is a numeric limit to the LRU cache which only matters if Freecell
1124       Solver was compiled with FCS_RCS_STATES enabled. This value should be a
1125       positive integer and the higher it is, the more quickly it is likely
1126       that Freecell Solver will run, but it will also consume more memory.
1127       (The entire point of FCS_RCS_STATES is to conserve memory).
1128

META-OPTIONS

1130   --reset
1131       Global
1132
1133       This option resets the program to its initial state, losing all the
1134       configuration logic that was input to it up to that state. Afterwards,
1135       it can be set to a different configuration, again.
1136
1137   --read-from-file [num_skip,]filename
1138       Global (but context-specific).
1139
1140       This option will read the configuration options from a file. The format
1141       of the file is similar to that used by the UNIX Bourne Shell. (i.e:
1142       spaces denote separate arguments, double-quotes encompass arguments,
1143       backslash escapes characters).
1144
1145       The filename can be preceded by an optional number of the arguments to
1146       skip followed by a comma. (the default is 0)
1147
1148   -l [preset] , --load-config [preset]
1149       Global (but context-specific).
1150
1151       Reads the configuration specified by [preset] and configures the solver
1152       accordingly. A preset is a set of command line arguments to be analyzed
1153       in the place of this option. They are read from a set of presetrc files
1154       : one installed system-wide, the other at
1155       $HOME/.freecell-solver/presetrc and the third at the path specified by
1156       the FREECELL_SOLVER_PRESETRC environment variable. You can add more
1157       presets at any of these places. (refer to
1158       http://groups.yahoo.com/group/fc-solve-discuss/message/403 for
1159       information about their format)
1160
1161       Presets that are shipped with Freecell Solver:
1162
1163       ┌────────────────────────────┬─────────────────────────────────────────────────┐
1164       │                            │                                                 │
1165       │abra-kadabra                │ a meta-moves preset                             │
1166       ├────────────────────────────┼─────────────────────────────────────────────────┤
1167       │                            │                                                 │
1168       │amateur-star                │ a meta-moves preset that                        │
1169       │                            │ yields solutions faster on                      │
1170       │                            │ average than three-eighty.                      │
1171       ├────────────────────────────┼─────────────────────────────────────────────────┤
1172       │                            │                                                 │
1173       │blue-yonder                 │ a meta-moves preset                             │
1174       │                            │ generated by a quota                            │
1175       │                            │ optimization algorithm.                         │
1176       ├────────────────────────────┼─────────────────────────────────────────────────┤
1177       │                            │                                                 │
1178       │children-playing-ball       │ a meta-moves and                                │
1179       │                            │ flare-based preset that                         │
1180       │                            │ tends to yield very short                       │
1181       │                            │ solution, but is very slow                      │
1182       │                            │ (solves only 3 boards per                       │
1183       │                            │ second on a Pentium 4                           │
1184       │                            │ 2.4GHz).                                        │
1185       ├────────────────────────────┼─────────────────────────────────────────────────┤
1186       │                            │                                                 │
1187       │conspiracy-theory           │ a meta-moves preset that                        │
1188       │                            │ yields solutions faster on                      │
1189       │                            │ average than amateur-star.                      │
1190       ├────────────────────────────┼─────────────────────────────────────────────────┤
1191       │                            │                                                 │
1192       │cookie-monster              │ a meta-moves preset that                        │
1193       │                            │ yields solutions faster on                      │
1194       │                            │ average than                                    │
1195       │                            │ one-big-family.                                 │
1196       ├────────────────────────────┼─────────────────────────────────────────────────┤
1197       │                            │                                                 │
1198       │cool-jives                  │ a meta-moves preset                             │
1199       ├────────────────────────────┼─────────────────────────────────────────────────┤
1200       │                            │                                                 │
1201       │crooked-nose                │ an atomic-moves preset                          │
1202       │                            │ (guarantees an accurate                         │
1203       │                            │ verdict)                                        │
1204       ├────────────────────────────┼─────────────────────────────────────────────────┤
1205       │                            │                                                 │
1206       │enlightened-ostrich         │ a meta-moves preset (that                       │
1207       │                            │ depends on Freecell Solver                      │
1208       │                            │ 3.4.0 and above) that                           │
1209       │                            │ yields solutions faster on                      │
1210       │                            │ average than foss-nessy.                        │
1211       ├────────────────────────────┼─────────────────────────────────────────────────┤
1212       │                            │                                                 │
1213       │fools-gold                  │ an atomic-moves preset                          │
1214       ├────────────────────────────┼─────────────────────────────────────────────────┤
1215       │                            │                                                 │
1216       │foss-nessy                  │ a meta-moves preset (that                       │
1217       │                            │ depends on Freecell Solver                      │
1218       │                            │ 3.2.0 and above) that                           │
1219       │                            │ yields solutions faster on                      │
1220       │                            │ average than                                    │
1221       │                            │ the-iglu-cabal.                                 │
1222       ├────────────────────────────┼─────────────────────────────────────────────────┤
1223       │                            │                                                 │
1224       │good-intentions             │ runs "cool-jives" and then                      │
1225       │                            │ "fools-gold"                                    │
1226       ├────────────────────────────┼─────────────────────────────────────────────────┤
1227       │                            │                                                 │
1228       │gooey-unknown-thing         │ a meta-moves preset that                        │
1229       │                            │ aims to minimise the                            │
1230       │                            │ outcome solution’s length.                      │
1231       ├────────────────────────────┼─────────────────────────────────────────────────┤
1232       │                            │                                                 │
1233       │hello-world                 │ a meta-moves preset                             │
1234       ├────────────────────────────┼─────────────────────────────────────────────────┤
1235       │                            │                                                 │
1236       │john-galt-line              │ a meta-moves preset                             │
1237       ├────────────────────────────┼─────────────────────────────────────────────────┤
1238       │                            │                                                 │
1239       │looking-glass               │ a meta-moves preset that                        │
1240       │                            │ yields solutions faster on                      │
1241       │                            │ average than                                    │
1242       │                            │ cookie-monster.                                 │
1243       ├────────────────────────────┼─────────────────────────────────────────────────┤
1244       │                            │                                                 │
1245       │maliciously-obscure         │ a meta-moves and                                │
1246       │                            │ flare-based preset that                         │
1247       │                            │ tends to yield very short                       │
1248       │                            │ solutions (even in                              │
1249       │                            │ comparison to                                   │
1250       │                            │ children-playing-ball )                         │
1251       │                            │ but is slow.                                    │
1252       ├────────────────────────────┼─────────────────────────────────────────────────┤
1253       │                            │                                                 │
1254       │micro-finance               │ a meta-moves and                                │
1255       │                            │ flare-based preset that                         │
1256       │                            │ tends to yield very short                       │
1257       │                            │ solutions (even in                              │
1258       │                            │ comparison to                                   │
1259       │                            │ maliciously-obscure ) but                       │
1260       │                            │ is even slower.                                 │
1261       ├────────────────────────────┼─────────────────────────────────────────────────┤
1262       │                            │                                                 │
1263       │micro-finance-improved      │ a meta-moves and                                │
1264       │                            │ flare-based preset, based                       │
1265       │                            │ on micro-finance that                           │
1266       │                            │ yields somewhat shorter                         │
1267       │                            │ solutions on average, and                       │
1268       │                            │ should not be slower.                           │
1269       ├────────────────────────────┼─────────────────────────────────────────────────┤
1270       │                            │                                                 │
1271       │one-big-family              │ a meta-moves preset that                        │
1272       │                            │ yields solutions faster on                      │
1273       │                            │ average than                                    │
1274       │                            │ conspiracy-theory.                              │
1275       ├────────────────────────────┼─────────────────────────────────────────────────┤
1276       │                            │                                                 │
1277       │qualified-seed              │ a meta-moves and                                │
1278       │                            │ flare-based preset, based                       │
1279       │                            │ on micro-finance-improved                       │
1280       │                            │ that yields somewhat                            │
1281       │                            │ shorter solutions on                            │
1282       │                            │ average, and should not be                      │
1283       │                            │ slower.                                         │
1284       ├────────────────────────────┼─────────────────────────────────────────────────┤
1285       │                            │                                                 │
1286       │qualified-seed-improved     │ qualified-seed with -fif 5                      │
1287       │                            │ and --flares-choice fcpro                       │
1288       ├────────────────────────────┼─────────────────────────────────────────────────┤
1289       │                            │                                                 │
1290       │rin-tin-tin                 │ a meta-moves preset                             │
1291       ├────────────────────────────┼─────────────────────────────────────────────────┤
1292       │                            │                                                 │
1293       │sand-stone                  │ an atomic-moves preset                          │
1294       │                            │ that aims to minimise the                       │
1295       │                            │ outcome solution’s length.                      │
1296       ├────────────────────────────┼─────────────────────────────────────────────────┤
1297       │                            │                                                 │
1298       │slick-rock                  │ run "gooey-unknown-thing"                       │
1299       │                            │ and then "sand-stone"                           │
1300       ├────────────────────────────┼─────────────────────────────────────────────────┤
1301       │                            │                                                 │
1302       │sentient-pearls             │ a meta-moves and flares                         │
1303       │                            │ based preset with short                         │
1304       │                            │ solutions. Much faster                          │
1305       │                            │ than children-playing-ball                      │
1306       │                            │ but yields less optimal                         │
1307       │                            │ solutions.                                      │
1308       ├────────────────────────────┼─────────────────────────────────────────────────┤
1309       │                            │                                                 │
1310       │tea-for-two                 │ a meta-moves preset                             │
1311       │                            │ optimized for                                   │
1312       │                            │ two-freecells' Freecell                         │
1313       │                            │ games (although it can                          │
1314       │                            │ work on other                                   │
1315       │                            │ Freecell-like games as                          │
1316       │                            │ well).                                          │
1317       ├────────────────────────────┼─────────────────────────────────────────────────┤
1318       │                            │                                                 │
1319       │the-iglu-cabal              │ a meta-moves preset that                        │
1320       │                            │ yields faster solutions on                      │
1321       │                            │ average than blue-yonder.                       │
1322       ├────────────────────────────┼─────────────────────────────────────────────────┤
1323       │                            │                                                 │
1324       │the-last-mohican            │ a preset for solving                            │
1325       │                            │ Simple Simon. Yields less                       │
1326       │                            │ false negatives than the                        │
1327       │                            │ default one, but might be                       │
1328       │                            │ slower.                                         │
1329       ├────────────────────────────┼─────────────────────────────────────────────────┤
1330       │                            │                                                 │
1331       │three-eighty                │ a meta-moves preset (that                       │
1332       │                            │ depends on Freecell Solver                      │
1333       │                            │ 3.4.0 and above) that                           │
1334       │                            │ yields solutions faster on                      │
1335       │                            │ average than                                    │
1336       │                            │ enlightened-ostrich.                            │
1337       ├────────────────────────────┼─────────────────────────────────────────────────┤
1338       │                            │                                                 │
1339       │toons-for-twenty-somethings │ an atomic-moves preset                          │
1340       │                            │ that solves more boards                         │
1341       │                            │ efficiently than                                │
1342       │                            │ "fools-gold".                                   │
1343       ├────────────────────────────┼─────────────────────────────────────────────────┤
1344       │                            │                                                 │
1345       │video-editing               │ a meta-moves and                                │
1346       │                            │ flare-based preset, based                       │
1347       │                            │ on qualified-seed that                          │
1348       │                            │ yields shorter solutions                        │
1349       │                            │ on average, but may be                          │
1350       │                            │ somewhat slower. Named to                       │
1351       │                            │ commemorate the earlier                         │
1352       │                            │ work of Adrian Ettlinger                        │
1353       │                            │ (1925-2013)                                     │
1354       │                            │ <http://en.wikipedia.org/wiki/Adrian_Ettlinger> │
1355       │                            │ who later contributed to                        │
1356       │                            │ Freecell Solver and to                          │
1357       │                            │ Freecell research.                              │
1358       ├────────────────────────────┼─────────────────────────────────────────────────┤
1359       │                            │                                                 │
1360       │yellow-brick-road           │ a meta-moves preset                             │
1361       └────────────────────────────┴─────────────────────────────────────────────────┘
1362
1363       They can be abbreviated into their lowercase acronym (i.e: "ak" or
1364       "rtt").
1365

RUN-TIME DISPLAY OPTIONS

1367   -i , --iter-output
1368       Global
1369
1370       This option tells fc-solve to print the iteration number and the
1371       recursion depth of every state which is checked, to the standard
1372       output. It’s a good way to keep track of how it’s doing, but the output
1373       slows it down a bit.
1374
1375   --iter-output-step [step]
1376       Global
1377
1378       Prints the current iteration if -i is specified, only every [step]
1379       steps, where [step] is a positive integer. For example, if you do
1380       fc-solve -i --iter-output-step 100, you will see this:
1381
1382           Iteration: 0
1383           Iteration: 100
1384           Iteration: 200
1385           Iteration: 300
1386
1387       This option has been added in Freecell Solver 4.20.0 and is useful for
1388       speeding up the runtime process, by avoiding excessive output.
1389
1390   -s , --state-output
1391       Global
1392
1393       This option implies -i. If specified, this option outputs the cards and
1394       formation of the board itself, for every state that is checked.
1395       "fc-solve -s" yields a nice real-time display of the progress of
1396       Freecell Solver, but you usually cannot make what is going on because
1397       it is so fast.
1398

SIGNAL COMBINATIONS

1400       If you are working on a UNIX or a similar system, then you can set some
1401       run-time options in "fc-solve" by sending it some signal combinations.
1402
1403       If you send the fc-solve a single ABRT signal, then fc-solve will
1404       terminate the scan prematurely, and report that the iterations’s limit
1405       has been exceeded.
1406
1407       If you send the signal USR1, without sending any other signals before
1408       that, then fc-solve will output the present number of iterations. This
1409       method is a good way to monitor an instance that takes a long time to
1410       solve.
1411
1412       If you send it the signal USR2 and then USR1, then fc-solve will print
1413       the iteration number and depth on every state that it checks. It is the
1414       equivalent of specifying (or unspecifying) the option -i/--iter-output.
1415
1416       If you send it two USR2 signals and then USR1, then fc-solve will also
1417       print the board of every state. Again, this will only be done assuming
1418       the iteration output is turned on.
1419

AUTHOR

1421       Shlomi Fish
1422
1423
1424
1425                                  2019-12-30                       FC-SOLVE(6)
Impressum