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

THE BOARD GENERATION PROGRAMS

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

SOME COMPLETE EXAMPLES FOR LAYOUTS

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

HOW TO READ THE SOLUTIONS

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

THE PROGRAMS

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

GETTING HELP

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

OUTPUT OPTIONS

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

GAME VARIANTS OPTIONS

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

SOLVING ALGORITHM OPTIONS

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

RUNNING SEVERAL SCANS IN PARALLEL

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

META-OPTIONS

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

RUN-TIME DISPLAY OPTIONS

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

SIGNAL COMBINATIONS

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

AUTHOR

1420       Shlomi Fish
1421
1422
1423
1424                                  2019-07-28                       FC-SOLVE(6)
Impressum