--- In fc-solve-discuss_at_yahoogroups.com, Shlomi Fish <shlomif_at_...>
wrote:
>
> Well, Freecell Solver can be configured in run-time with the exact
heuristic to
> use for trying to solve the deals. It can run several scans one after
the
> other, or alternatively switch-task between several scans until one of
them
> finds a solution, or alternatively the so-called flares-based
processing,
> where several scans are used and the shortest one is picked up. One
can also
> combine that.
>
> Without knowing the specifics of your passes, it will be hard to
duplicate that
> in Freecell Solver, but naturally, I am interested in knowing what
they are.
>
Okay, let's see where this goes. Here's the bottom-up listing of the
hierarchy used in my general solver.
Pass_3 is the fundamental logic for solving a deal. As far as I know,
it'll solve all but one deal. If I change the prioritization algorithm,
it'll solve that deal as well. However, it takes the most time to solve
a deal because it examines the most number of layouts.
Pass_2 contains Pass_3 and adds a constraint that prevents more than one
occurrence of essentially equivalent layouts -- where "suit" exists only
as red/black. Typically, it'll examine fewer layouts than Pass_3 before
it finds a solution.
Pass_1 contains Pass_2 and adds a few constraints to improve
performance. These constraints don't meet any justification towards
solving a deal. However, they do reduce the number of layouts generated
and also help to shorten solutions when compared to Pass_2 and Pass_3.
There aren't any solveable deals in the first 1,000,000 that have a
false-negative in Pass_1 and Pass_2, and need to perform Pass_3.
However, there are a few solveable deals in the first 25,000,000 that do
have a false-negative in Pass_1 and Pass_2, and do need Pass_3 to solve
them. I'm not sure if I retained a list of these deals or not.
For the first 1,000,000 deals, here's the results from my solver for the
solveable deals.
Pass_1: (2,1) = 999988 deals solved ... leaving
Pass_2: (2,0) = 4 deals solved ... leaving
Pass_3: (0,0) = 0 deals solved
First, I'm going to need an example solution. Your original solution for
deal #6240 (with corrections) will do.
#00006240 Attempt: 1 NumFcs=4 (ShlomiFish) 173 moves
4a 4b 1c 14 45 8d 83 2h 63 a8
54 13 6a c6 45 61 85 58 54 6c
61 84 a6 8a 1h d8 68 6d 45 b6
2b 26 42 64 24 26 d2 27 46 56
87 8d c8 18 12 1c 17 54 82 51
b5 64 8b d8 78 75 85 8d b8 7b
78 7h 71 b7 46 81 d8 58 48 43
57 5b 5d
6h 2h 6h 2h 6h
56 45 c4 34 6c 16 1h 12 1h 15
43 d1 b1 53 8d 8h 71 54 a5 17
1b 1a d1 23 2d b2 1b d1 72 6d
a6 27 26 c2 34 6a 6c a6 2a c2
8c 8h 3h 87 8h c8 31 5c 62 b5
a6 13 72 7b 31 8a b7 c8 13 1b
27 a1 5c 72 d5 6a 43 b6 5d 46
c5 36 d4 1b 3c 3h 7h 27 b1 4d
72 3b 3h c4 1c 31 3h c3 4c b1
6b 6h c4 32 3c
First, lets examine two of my Pass_1 constraints.
Pass_1 Constraint #1: No card can be moved to a freecell more than once.
Pass_1 Constraint #2: No card from a orderly sequence of cards can be
moved to a freecell; e.g., 3C on 4H prevents 3C moving to a freecell.
In the above solution for deal #6240, FCS makes 42 moves to freecells.
Often cycling a card between columns and the freecells multiple times.
(an example of the latter first.)
#00006240 Attempt: 1 NumFcs=4 (ShlomiFish) 173 moves
(a): move sequence number
(b): move in daj-extended standard notation
(c): highest-valued card being moved, a multi-card move has a (+)
(d): target card, ec = empty column, fc = freecell
(a) (b) (c) (d)
--- --- --- --- sort: (c) + (a)
79 56. 2S ec
83 6c. 2S fc
112 c2. 2S ec
117 2a. 2S fc
129 a6. 2S ec
144 6a. 2S fc
#00006240 Attempt: 1 NumFcs=4 (ShlomiFish) 173 moves
(a): move sequence number
(b): move in daj-extended standard notation
(c): highest-valued card being moved, a multi-card move has a (+)
(d): target card, ec = empty column, fc = freecell
(a) (b) (c) (d)
--- --- --- --- sort: (d) + (c) + (a)
... (snip)
1 4a. 2D fc
83 6c. 2S fc
117 2a. 2S fc
144 6a. 2S fc
24 8a. 3S fc
126 5c. 3S fc
3 1c. 4C fc
108 6d. 4S fc
147 5d. 4S fc
158 4d. 4S fc
20 6c. 5H fc
53 8b. 5H fc
93 8d. 5S fc
105 1b. 5S fc
141 5c. 5S fc
169 6b. 6S fc
2 4b. 7C fc
119 8c. 7S fc
134 8a. 7S fc
152 1b. 7S fc
163 1c. 7S fc
13 6a. 9S fc
153 3c. TC fc
167 4c. TC fc
6 8d. TD fc
42 8d. TD fc
58 8d. TD fc
28 6d. TH fc
46 1c. JH fc
160 3b. QC fc
60 7b. QD fc
132 7b. QD fc
31 2b. QH fc
72 5b. QH fc
99 1b. QH fc
114 6a. QH fc
103 2d. QS fc
138 1b. QS fc
173 3c. JS fc
73 5d. KC fc
100 1a. KC fc
115 6c. KC fc
Now would probably be a good time to pause.
Regards, Danny
Received on Wed Nov 14 2012 - 09:52:07 IST