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.0.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
28

BUILDING

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

USAGE

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

THE BOARD GENERATION PROGRAMS

132       Several programs which can generate the initial boards of various
133       Freecell implementations can be found in the "board_gen/"
134       sub-directory. Read the README.txt file there for details on how they
135       can be compiled and used.
136
137       In any case, they can save you the time of inputting the board
138       yourself.
139
140

SOME COMPLETE EXAMPLES FOR LAYOUTS

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

HOW TO READ THE SOLUTIONS

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

THE PROGRAMS

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

GETTING HELP

237   -h , --help
238       Global
239
240       This option displays a help text on the screen. This help gives a help
241       display summarizing some ways to use the program and get more help.
242
243
244   --version
245       Global
246
247       This option displays the version number of the components that make the
248       executable (and then exits).
249
250
251   --help-configs
252       Global
253
254       Some help on the various configurations of Freecell Solver.
255
256
257   --help-options
258       Global
259
260       A help screen giving an overview of all available options.
261
262
263   --help-real-help
264       Global
265
266       Explains how to change the default help screen to a different one.
267
268
269   --help-short-sol
270       Global
271
272       How to generate shorter solutions.
273
274
275   --help-summary
276       Global
277
278       The default help screen.
279
280
281

OUTPUT OPTIONS

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

GAME VARIANTS OPTIONS

507   --freecells-num [Number of Freecells]
508       Global
509
510       This option specifies the number of freecells which are available to
511       the program. Freecell Solver can use any number of freecells as long as
512       it does not exceed its maximal number.
513
514       This maximum is hard-coded into the program, and can be specified at
515       compile-time by modifying the file config.h. See the file INSTALL (or
516       alternatively INSTALL.html) for details.
517
518
519   --stacks-num [Number of Stacks]
520       Global
521
522       This option specifies the number of stacks present in the board. Again,
523       this number cannot exceed the maximal number of stacks, which can be
524       specified in the file config.h during compile-time of Freecell Solver.
525
526
527   --decks-num [Number of Decks]
528       Global
529
530       This options specifies how many decks are found in the board. This
531       number cannot exceed the maximal number of decks, which can be
532       specified by the Freecell Solver build system.
533
534
535   --sequences-are-built-by {suit|alternate_color|rank}
536       Global
537
538       This option specifies whether a card sequence is built by suit or by
539       alternate colour or by rank regardless of suit.
540
541
542   --sequence-move {limited|unlimited}
543       Global
544
545       This option specifies whether the sequence move is limited by the
546       number of freecells or vacant stacks or not.
547
548
549   --empty-stacks-filled-by {kings|none|all}
550       Global
551
552       Specifies which cards can fill an empty stack.
553
554
555   --game [game] , --preset [game] , -g [game]
556       Global
557
558       Specifies the type of game. Each preset implies several of the settings
559       options above and sometimes even the moves’ order below. The default
560       configuration is for Freecell.
561
562       Available presets:
563
564       ┌───────────────────┬──────────────────────────┐
565       │                   │                          │
566       │bakers_dozen       │ Baker’s Dozen            │
567       ├───────────────────┼──────────────────────────┤
568       │                   │                          │
569       │bakers_game        │ Baker’s Game             │
570       ├───────────────────┼──────────────────────────┤
571       │                   │                          │
572       │beleaguered_castle │ Beleaguered Castle       │
573       ├───────────────────┼──────────────────────────┤
574       │                   │                          │
575       │citadel            │ Citadel                  │
576       ├───────────────────┼──────────────────────────┤
577       │                   │                          │
578       │cruel              │ Cruel                    │
579       ├───────────────────┼──────────────────────────┤
580       │                   │                          │
581       │der_katz           │ Der Katzenschwanz        │
582       ├───────────────────┼──────────────────────────┤
583       │                   │                          │
584       │die_schlange       │ Die Schlange             │
585       ├───────────────────┼──────────────────────────┤
586       │                   │                          │
587       │eight_off          │ Eight Off                │
588       ├───────────────────┼──────────────────────────┤
589       │                   │                          │
590       │fan                │ Fan                      │
591       ├───────────────────┼──────────────────────────┤
592       │                   │                          │
593       │forecell           │ Forecell                 │
594       ├───────────────────┼──────────────────────────┤
595       │                   │                          │
596       │freecell           │ Freecell (default)       │
597       ├───────────────────┼──────────────────────────┤
598       │                   │                          │
599       │good_measure       │ Good Measure             │
600       ├───────────────────┼──────────────────────────┤
601       │                   │                          │
602       │ko_bakers_game     │ Kings' Only Baker’s Game │
603       ├───────────────────┼──────────────────────────┤
604       │                   │                          │
605       │relaxed_freecell   │ Relaxed Freecell         │
606       ├───────────────────┼──────────────────────────┤
607       │                   │                          │
608       │relaxed_sehaven    │ Relaxed Seahaven Towers  │
609       ├───────────────────┼──────────────────────────┤
610       │                   │                          │
611       │seahaven           │ Seahaven Towers          │
612       ├───────────────────┼──────────────────────────┤
613       │                   │                          │
614       │simple_simon       │ Simple Simon             │
615       ├───────────────────┼──────────────────────────┤
616       │                   │                          │
617       │streets_and_alleys │ Streets and Alleys       │
618       └───────────────────┴──────────────────────────┘
619
620       Note: in order to solve Der Katzenschwanz and Die Schlange I recommend
621       you compile Freecell Solver with the INDIRECT_STACK_STATES option, or
622       else it will consume much more memory. For details consult the file
623       INSTALL.
624
625
626   Examples
627       To solve PySol Eight Off game No. 1,000 type:
628
629
630           $ make_pysol_freecell_board.py 1000 eight_off | fc-solve -g eight_off
631
632       To solve PySol Baker’s Game No. 50, type:
633
634
635           $ make_pysol_freecell_board.py 50 bakers_game | fc-solve -g bakers_game
636
637       If you want to solve a game similar to Freecell only with sequences
638       built by rank, and unlimited sequence move, do:
639
640
641           $ fc-solve -g freecell --sequences-are-built-by rank --sequence-move unlimited
642
643
644
645

SOLVING ALGORITHM OPTIONS

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

RUNNING SEVERAL SCANS IN PARALLEL

1041       Starting from Version 2.4.0, Freecell Solver can run several scans in
1042       parallel on the same state collection. Each scan resides in its own
1043       "Soft Thread". By specifying several soft threads on the command line
1044       one can create use several parallel scans. Once one of the scans
1045       reaches a solution, the solution will be displayed.
1046
1047   -nst , --next-soft-thread
1048       Hard-thread-specific
1049
1050       This option creates a new soft-thread and makes the following
1051       scan-specific options initialize it. For example:
1052
1053
1054           $ fc-solve --method a-star -nst --method soft-dfs -to 0123467 myboard.txt
1055
1056       will run an BeFS scan and a Soft-DFS scan with a moves order of 0123467
1057       on myboard.txt.
1058
1059
1060   -step [Step] , --soft-thread-step [Step]
1061       Soft-thread-specific
1062
1063       This option will set the number of iterations with which to run the
1064       soft thread before switching to the next one. By specifying a larger
1065       step, one can give a certain scan a longer run-time and a higher
1066       priority.
1067
1068       Note: after some experimentation, we have concluded that the --prelude
1069       option normally yields better results, but -step can be used as a
1070       fallback.
1071
1072
1073   -nht , --next-hard-thread
1074       Flare-wide
1075
1076       This argument lets one initialize the next hard thread. If Freecell
1077       Solver was compiled with such support, then it is possible to run each
1078       hard thread in its own system thread. Each hard-thread contains one or
1079       more soft threads.
1080
1081
1082   --st-name [soft thread name]
1083       Soft-thread-specific
1084
1085       This argument sets the name used to identify the current soft thread.
1086       This name can later be used to construct the prelude (see below).
1087
1088
1089   --prelude [\i1@st1{,\i2@st2{,\i3@st3...}}]
1090       Hard-thread-specific
1091
1092       Sets the prelude for the hard thread. At the beginning of the search,
1093       the hard thread plays a static sequence of iterations at each of the
1094       soft threads specified in the prelude, for the number of iterations
1095       specified.
1096
1097       For example, if you had three soft threads named "foo", "bar" and
1098       "rin", then the following prelude:
1099
1100
1101           --prelude 500@foo,1590@bar,100@foo,200@rin
1102
1103       Will run 500 iterations in "foo", then 1590 in "bar", then 100 in "foo"
1104       again, and then 200 in "rin". After the prelude finishes, the hard
1105       thread would run the scans one after the other in the sequence they
1106       were defined for their step number.
1107
1108
1109   --scans-synergy {none|dead-end-marks}
1110       Flare-wide
1111
1112       Specifies the synergy between the various scans, or how much they
1113       cooperate between themselves. none means they do not cooperate and only
1114       share the same memory resources. dead-end-marks means they try to mark
1115       states that they have withdrawn from, and states whose all their
1116       derived states are such, as "dead ends". This may or may not improve
1117       the speed of the solution.
1118
1119
1120   -ni , --next-instance
1121       Global
1122
1123       This option allows one to run two or more separate solvers one after
1124       the other. If the first one returned an unsolvable verdict, then the
1125       second one would run and so on. One use of it is to run an atomic moves
1126       scan after a meta-moves scan, so we will always get an accurate verdict
1127       and still enjoy some of the speed benefits of the meta-moves scan.
1128
1129
1130   -nf , --next-flare
1131       Instance-wide
1132
1133       Each instance contains several flares. Flares are various alternative
1134       scans, that are ran one after another, as specified in the
1135       --flares-plan below or defaulting to running only the first flare
1136       (which isn’t very useful). Out of all the flares that are successful in
1137       solving a board, Freecell Solver picks the one with the shortest
1138       solution.
1139
1140
1141   --flare-name [flare name]
1142       Flare-wide
1143
1144       This is a name that identifies the flare for use in the flares' plan.
1145
1146
1147   --flares-plan [flare plan]
1148       Instance-wide
1149
1150       This instance-wide parameter gives a plan for the flares as a big
1151       string. Here are some examples:
1152
1153
1154           --flares-plan "RunIndef:FlareyFlare"
1155
1156       This plan will run the flare with the name FlareyFlare indefinitely,
1157       until it terminates. Once a RunIndef action is encountered, the rest of
1158       the plan is ignored.
1159
1160
1161           --flares-plan "Run:500@MyFlare,Run:2000@FooFlare"
1162
1163       Runs MyFlare for 500 iterations and FooFlare for 2,000 iterations. Note
1164       that both flares will be run and won’t share any resources between
1165       them, and then the minimal solution out of both flares (or only those
1166       that finished ). If no flares finished, then Freecell Solver will run
1167       them both again for the same number of iterations each, until at least
1168       one finishes (or it ran out of the iterations' limit).
1169
1170
1171           --flares-plan "Run:500@dfs,Run:1500@befs,CP:,Run:10000@funky"
1172
1173       This runs the flares identified by dfs and befs and then see if a
1174       solution was reached ("CP:" stands for "checkpoint"), and if so yield
1175       it. If both flares did not reach a solution yet, or failed to solve the
1176       board, it will run the flare funky for 10,000 iterations and yield its
1177       solution. And like the previous case, this solution will loop after it
1178       ended for as long as the no flare solved the board or the program did
1179       not run out of iterations.
1180
1181       Using checkpoints one can yield a possibly sub-optimal (as far as
1182       solution length is concerned) solution that will still solve faster
1183       than letting all the flares run.
1184
1185
1186   --flares-choice [choice]
1187       Global
1188
1189       This dictates how to choose the winning flare based on if more than one
1190       yielded a solution. Possible options are:
1191
1192
1193        1.  --flares-choice fc_solve - the default, which picks up the
1194           solutions based on the length of the solution in Freecell Solver’s
1195           moves.
1196
1197        2.  --flares-choice fcpro - picks up the shortest solution based on
1198           the number of Freecell Pro moves, while not considering implicit
1199           moves to the foundations using Horne’s Prune / Raymond Prune.
1200
1201
1202   -fif [factor] , --flares-iters-factor [factor]
1203       Global
1204
1205       Sets a global, floating-point number, factor to multiply all the
1206       iterations counts in the flares plans. The higher it is, the longer the
1207       scans will take, but there is a greater chance more of them will
1208       succeed, and, as a result, the solution may be shorter.
1209
1210       As an example, the following:
1211
1212
1213           --flares-plan "Run:500@MyFlare,Run:2000@FooFlare" --flares-iters-factor 2
1214
1215       Is equivalent to:
1216
1217
1218           --flares-plan "Run:1000@MyFlare,Run:4000@FooFlare"
1219
1220       while:
1221
1222
1223           --flares-plan "Run:500@MyFlare,Run:2000@FooFlare" --flares-iters-factor 0.5
1224
1225       Is equivalent to:
1226
1227
1228           --flares-plan "Run:250@MyFlare,Run:1000@FooFlare"
1229
1230
1231
1232   --cache-limit [cache limit]
1233       Global
1234
1235       This is a numeric limit to the LRU cache which only matters if Freecell
1236       Solver was compiled with FCS_RCS_STATES enabled. This value should be a
1237       positive integer and the higher it is, the more quickly it is likely
1238       that Freecell Solver will run, but it will also consume more memory.
1239       (The entire point of FCS_RCS_STATES is to conserve memory).
1240
1241
1242

META-OPTIONS

1244   --reset
1245       Global
1246
1247       This option resets the program to its initial state, losing all the
1248       configuration logic that was input to it up to that state. Afterwards,
1249       it can be set to a different configuration, again.
1250
1251
1252   --read-from-file [num_skip,]filename
1253       Global (but context-specific).
1254
1255       This option will read the configuration options from a file. The format
1256       of the file is similar to that used by the UNIX Bourne Shell. (i.e:
1257       spaces denote separate arguments, double-quotes encompass arguments,
1258       backslash escapes characters).
1259
1260       The filename can be preceded by an optional number of the arguments to
1261       skip followed by a comma. (the default is 0)
1262
1263
1264   -l [preset] , --load-config [preset]
1265       Global (but context-specific).
1266
1267       Reads the configuration specified by [preset] and configures the solver
1268       accordingly. A preset is a set of command line arguments to be analyzed
1269       in the place of this option. They are read from a set of presetrc files
1270       : one installed system-wide, the other at
1271       $HOME/.freecell-solver/presetrc and the third at the path specified by
1272       the FREECELL_SOLVER_PRESETRC environment variable. You can add more
1273       presets at any of these places. (refer to
1274       http://groups.yahoo.com/group/fc-solve-discuss/message/403 for
1275       information about their format)
1276
1277       Presets that are shipped with Freecell Solver:
1278
1279       ┌────────────────────────────┬────────────────────────────┐
1280       │                            │                            │
1281       │abra-kadabra                │ a meta-moves preset        │
1282       ├────────────────────────────┼────────────────────────────┤
1283       │                            │                            │
1284       │amateur-star                │ a meta-moves preset that   │
1285       │                            │ yields solutions faster on │
1286       │                            │ average than three-eighty. │
1287       ├────────────────────────────┼────────────────────────────┤
1288       │                            │                            │
1289       │blue-yonder                 │ a meta-moves preset        │
1290       │                            │ generated by a quota       │
1291       │                            │ optimization algorithm.    │
1292       ├────────────────────────────┼────────────────────────────┤
1293       │                            │                            │
1294       │children-playing-ball       │ a meta-moves and           │
1295       │                            │ flare-based preset that    │
1296       │                            │ tends to yield very short  │
1297       │                            │ solution, but is very slow │
1298       │                            │ (solves only 3 boards per  │
1299       │                            │ second on a Pentium 4      │
1300       │                            │ 2.4GHz).                   │
1301       ├────────────────────────────┼────────────────────────────┤
1302       │                            │                            │
1303       │conspiracy-theory           │ a meta-moves preset that   │
1304       │                            │ yields solutions faster on │
1305       │                            │ average than amateur-star. │
1306       ├────────────────────────────┼────────────────────────────┤
1307       │                            │                            │
1308       │cookie-monster              │ a meta-moves preset that   │
1309       │                            │ yields solutions faster on │
1310       │                            │ average than               │
1311       │                            │ one-big-family.            │
1312       ├────────────────────────────┼────────────────────────────┤
1313       │                            │                            │
1314       │cool-jives                  │ a meta-moves preset        │
1315       ├────────────────────────────┼────────────────────────────┤
1316       │                            │                            │
1317       │crooked-nose                │ an atomic-moves preset     │
1318       │                            │ (guarantees an accurate    │
1319       │                            │ verdict)                   │
1320       ├────────────────────────────┼────────────────────────────┤
1321       │                            │                            │
1322       │enlightened-ostrich         │ a meta-moves preset (that  │
1323       │                            │ depends on Freecell Solver │
1324       │                            │ 3.4.0 and above) that      │
1325       │                            │ yields solutions faster on │
1326       │                            │ average than foss-nessy.   │
1327       ├────────────────────────────┼────────────────────────────┤
1328       │                            │                            │
1329       │fools-gold                  │ an atomic-moves preset     │
1330       ├────────────────────────────┼────────────────────────────┤
1331       │                            │                            │
1332       │foss-nessy                  │ a meta-moves preset (that  │
1333       │                            │ depends on Freecell Solver │
1334       │                            │ 3.2.0 and above) that      │
1335       │                            │ yields solutions faster on │
1336       │                            │ average than               │
1337       │                            │ the-iglu-cabal.            │
1338       ├────────────────────────────┼────────────────────────────┤
1339       │                            │                            │
1340       │good-intentions             │ runs "cool-jives" and then │
1341       │                            │ "fools-gold"               │
1342       ├────────────────────────────┼────────────────────────────┤
1343       │                            │                            │
1344       │gooey-unknown-thing         │ a meta-moves preset that   │
1345       │                            │ aims to minimise the       │
1346       │                            │ outcome solution’s length. │
1347       ├────────────────────────────┼────────────────────────────┤
1348       │                            │                            │
1349       │hello-world                 │ a meta-moves preset        │
1350       ├────────────────────────────┼────────────────────────────┤
1351       │                            │                            │
1352       │john-galt-line              │ a meta-moves preset        │
1353       ├────────────────────────────┼────────────────────────────┤
1354       │                            │                            │
1355       │looking-glass               │ a meta-moves preset that   │
1356       │                            │ yields solutions faster on │
1357       │                            │ average than               │
1358       │                            │ cookie-monster.            │
1359       ├────────────────────────────┼────────────────────────────┤
1360       │                            │                            │
1361       │maliciously-obscure         │ a meta-moves and           │
1362       │                            │ flare-based preset that    │
1363       │                            │ tends to yield very short  │
1364       │                            │ solutions (even in         │
1365       │                            │ comparison to              │
1366       │                            │ children-playing-ball )    │
1367       │                            │ but is slow.               │
1368       ├────────────────────────────┼────────────────────────────┤
1369       │                            │                            │
1370       │micro-finance               │ a meta-moves and           │
1371       │                            │ flare-based preset that    │
1372       │                            │ tends to yield very short  │
1373       │                            │ solutions (even in         │
1374       │                            │ comparison to              │
1375       │                            │ maliciously-obscure ) but  │
1376       │                            │ is even slower.            │
1377       ├────────────────────────────┼────────────────────────────┤
1378       │                            │                            │
1379       │micro-finance-improved      │ a meta-moves and           │
1380       │                            │ flare-based preset, based  │
1381       │                            │ on micro-finance that      │
1382       │                            │ yields somewhat shorter    │
1383       │                            │ solutions on average, and  │
1384       │                            │ should not be slower.      │
1385       ├────────────────────────────┼────────────────────────────┤
1386       │                            │                            │
1387       │one-big-family              │ a meta-moves preset that   │
1388       │                            │ yields solutions faster on │
1389       │                            │ average than               │
1390       │                            │ conspiracy-theory.         │
1391       ├────────────────────────────┼────────────────────────────┤
1392       │                            │                            │
1393       │qualified-seed              │ a meta-moves and           │
1394       │                            │ flare-based preset, based  │
1395       │                            │ on micro-finance-improved  │
1396       │                            │ that yields somewhat       │
1397       │                            │ shorter solutions on       │
1398       │                            │ average, and should not be │
1399       │                            │ slower.                    │
1400       ├────────────────────────────┼────────────────────────────┤
1401       │                            │                            │
1402       │qualified-seed-improved     │ qualified-seed with -fif 5 │
1403       │                            │ and --flares-choice fcpro  │
1404       ├────────────────────────────┼────────────────────────────┤
1405       │                            │                            │
1406       │rin-tin-tin                 │ a meta-moves preset        │
1407       ├────────────────────────────┼────────────────────────────┤
1408       │                            │                            │
1409       │sand-stone                  │ an atomic-moves preset     │
1410       │                            │ that aims to minimise the  │
1411       │                            │ outcome solution’s length. │
1412       ├────────────────────────────┼────────────────────────────┤
1413       │                            │                            │
1414       │slick-rock                  │ run "gooey-unknown-thing"  │
1415       │                            │ and then "sand-stone"      │
1416       ├────────────────────────────┼────────────────────────────┤
1417       │                            │                            │
1418       │sentient-pearls             │ a meta-moves and flares    │
1419       │                            │ based preset with short    │
1420       │                            │ solutions. Much faster     │
1421       │                            │ than children-playing-ball │
1422       │                            │ but yields less optimal    │
1423       │                            │ solutions.                 │
1424       ├────────────────────────────┼────────────────────────────┤
1425       │                            │                            │
1426       │tea-for-two                 │ a meta-moves preset        │
1427       │                            │ optimized for              │
1428       │                            │ two-freecells' Freecell    │
1429       │                            │ games (although it can     │
1430       │                            │ work on other              │
1431       │                            │ Freecell-like games as     │
1432       │                            │ well).                     │
1433       ├────────────────────────────┼────────────────────────────┤
1434       │                            │                            │
1435       │the-iglu-cabal              │ a meta-moves preset that   │
1436       │                            │ yields faster solutions on │
1437       │                            │ average than blue-yonder.  │
1438       ├────────────────────────────┼────────────────────────────┤
1439       │                            │                            │
1440       │the-last-mohican            │ a preset for solving       │
1441       │                            │ Simple Simon. Yields less  │
1442       │                            │ false negatives than the   │
1443       │                            │ default one, but might be  │
1444       │                            │ slower.                    │
1445       ├────────────────────────────┼────────────────────────────┤
1446       │                            │                            │
1447       │three-eighty                │ a meta-moves preset (that  │
1448       │                            │ depends on Freecell Solver │
1449       │                            │ 3.4.0 and above) that      │
1450       │                            │ yields solutions faster on │
1451       │                            │ average than               │
1452       │                            │ enlightened-ostrich.       │
1453       ├────────────────────────────┼────────────────────────────┤
1454       │                            │                            │
1455       │toons-for-twenty-somethings │ an atomic-moves preset     │
1456       │                            │ that solves more boards    │
1457       │                            │ efficiently than           │
1458       │                            │ "fools-gold".              │
1459       ├────────────────────────────┼────────────────────────────┤
1460       │                            │                            │
1461       │video-editing               │ a meta-moves and           │
1462       │                            │ flare-based preset, based  │
1463       │                            │ on qualified-seed that     │
1464       │                            │ yields shorter solutions   │
1465       │                            │ on average, but may be     │
1466       │                            │ somewhat slower. Named to  │
1467       │                            │ commemorate the earlier    │
1468       │                            │ work of Adrian Ettlinger   │
1469       │                            │ (1925-2013) who later      │
1470       │                            │ contributed to Freecell    │
1471       │                            │ Solver and to Freecell     │
1472       │                            │ research.                  │
1473       ├────────────────────────────┼────────────────────────────┤
1474       │                            │                            │
1475       │yellow-brick-road           │ a meta-moves preset        │
1476       └────────────────────────────┴────────────────────────────┘
1477
1478       They can be abbreviated into their lowercase acronym (i.e: "ak" or
1479       "rtt").
1480
1481
1482

RUN-TIME DISPLAY OPTIONS

1484   -i , --iter-output
1485       Global
1486
1487       This option tells fc-solve to print the iteration number and the
1488       recursion depth of every state which is checked, to the standard
1489       output. It’s a good way to keep track of how it’s doing, but the output
1490       slows it down a bit.
1491
1492
1493   --iter-output-step [step]
1494       Global
1495
1496       Prints the current iteration if -i is specified, only every [step]
1497       steps, where [step] is a positive integer. For example, if you do
1498       fc-solve -i --iter-output-step 100, you will see this:
1499
1500
1501           Iteration: 0
1502           Iteration: 100
1503           Iteration: 200
1504           Iteration: 300
1505
1506       This option has been added in Freecell Solver 4.20.0 and is useful for
1507       speeding up the runtime process, by avoiding excessive output.
1508
1509
1510   -s , --state-output
1511       Global
1512
1513       This option implies -i. If specified, this option outputs the cards and
1514       formation of the board itself, for every state that is checked.
1515       "fc-solve -s" yields a nice real-time display of the progress of
1516       Freecell Solver, but you usually cannot make what is going on because
1517       it is so fast.
1518
1519
1520

SIGNAL COMBINATIONS

1522       If you are working on a UNIX or a similar system, then you can set some
1523       run-time options in "fc-solve" by sending it some signal combinations.
1524
1525       If you send the fc-solve a single ABRT signal, then fc-solve will
1526       terminate the scan prematurely, and report that the iterations’s limit
1527       has been exceeded.
1528
1529       If you send the signal USR1, without sending any other signals before
1530       that, then fc-solve will output the present number of iterations. This
1531       method is a good way to monitor an instance that takes a long time to
1532       solve.
1533
1534       If you send it the signal USR2 and then USR1, then fc-solve will print
1535       the iteration number and depth on every state that it checks. It is the
1536       equivalent of specifying (or unspecifying) the option -i/--iter-output.
1537
1538       If you send it two USR2 signals and then USR1, then fc-solve will also
1539       print the board of every state. Again, this will only be done assuming
1540       the iteration output is turned on.
1541
1542

AUTHOR

1544       Shlomi Fish <shlomif@cpan.org>
1545           Author.
1546
1547
1548
1549                                  2018-10-27                       FC-SOLVE(6)
Impressum