Commits

Shlomi Fish committed 43442d5

Bug fix: when unlimited seq move always allows to move any number of cards.

- Made sure that when unlimited sequence move takes place, it isn't
affected by kings_only, etc. I.e: it always allows to move an
arbitrary number of cards when it is specified.
- Bug discovered based on this post by larrysan:
- http://tech.groups.yahoo.com/group/fc-solve-discuss/message/856

Individual changes:

1. Added a test to t/07-solution.t

2. Added the sample solution to:

t/data/sample-solutions/fcs-larrysan-kings-only-0-freecells-unlimited-move.txt

(New file)

3. Fixed the output of the Freecells when their count is 0.
( lib/Games/Solitaire/Verify/Freecells.pm )

4. lib/Games/Solitaire/Verify/State.pm:
- fixed hte bug by fixing _calc_max_sequence_move
- made sure that _stringify_freecells delegates to _freecells()

git-svn-id: file:///home/shlomif/Backup/svn-dumps/google-code/svnsync-repos/fc-solve/trunk@1177 e7e8a897-7ba4-4ee7-b36f-f4c66519b19a

Comments (0)

Files changed (6)

Games-Solitaire-Verify/Games-Solitaire-Verify/Changes

 Revision history for Games-Solitaire-VerifySolution
 
+        - Made sure that when unlimited sequence move takes place, it isn't
+        affected by kings_only, etc. I.e: it always allows to move an
+        arbitrary number of cards when it is specified.
+            - Bug discovered based on this post by larrysan:
+            - http://tech.groups.yahoo.com/group/fc-solve-discuss/message/856
+
 0.04    Thu Aug  7 20:36:14 IDT 2008
         - Now verify_and_perform_move in Games::Solitaire::Verify::State
         is returning objects of exception classes, instead of stringified

Games-Solitaire-Verify/Games-Solitaire-Verify/MANIFEST

 t/data/sample-solutions/fcs-freecell-24.txt
 t/data/sample-solutions/fcs-freecell-24-wrong-1.txt
 t/data/sample-solutions/fcs-freecell-24-wrong-2.txt
+t/data/sample-solutions/fcs-larrysan-kings-only-0-freecells-unlimited-move.txt
 t/data/sample-solutions/fcs-relaxed-freecell-11982.txt
 t/data/sample-solutions/fcs-seahaven-towers-1977.txt
 t/pod-coverage.t

Games-Solitaire-Verify/Games-Solitaire-Verify/lib/Games/Solitaire/Verify/Freecells.pm

 {
     my $self = shift;
 
-    return "Freecells:" . join("",
+    return "Freecells:" . (($self->count() == 0) ? " " :
+    join("",
         map { "  " . (defined($_) ? $_->to_string() : "  ") }
         map { $self->cell($_) } 
         (0 .. ($self->count()-1))
-    );
+    ));
 }
 
 =head2 $self->cell_clone($pos)

Games-Solitaire-Verify/Games-Solitaire-Verify/lib/Games/Solitaire/Verify/State.pm

 {
     my ($self, $args) = @_;
 
-    return
-         +($self->_variant_params->sequence_move() eq "unlimited")
-            ? POSIX::INT_MAX()
-            : $self->_calc_freecell_max_seq_move($args)
-            ;
+    return $self->_calc_freecell_max_seq_move($args);
 }
 
 sub _calc_max_sequence_move
     my ($self, $args) = @_;
 
     return
-        (
-               ($self->_variant_params->empty_stacks_filled_by() eq "any")
-             ? $self->_calc_empty_stacks_filled_by_any_card_max_seq_move($args)
-             : ($self->num_empty_freecells() + 1)
-        );
+        +($self->_variant_params->sequence_move() eq "unlimited")
+            ? POSIX::INT_MAX()
+            : ($self->_variant_params->empty_stacks_filled_by() eq "any")
+            ? $self->_calc_empty_stacks_filled_by_any_card_max_seq_move($args)
+            : ($self->num_empty_freecells() + 1)
+        ;
 }
 
 sub _is_sequence_in_column
 {
     my $self = shift;
 
-    return "Freecells:" . join("",
-        map { "  " . (defined($_) ? $_->to_string() : "  ") }
-        map { $self->get_freecell($_) } 
-        (0 .. ($self->num_freecells()-1))
-    );
+    return $self->_freecells()->to_string();
 }
 
 

Games-Solitaire-Verify/Games-Solitaire-Verify/t/07-solution.t

 use strict;
 use warnings;
 
-use Test::More tests => 14;
+use Test::More tests => 15;
 
 use Data::Dumper;
 
 
     close($input_fh);
 }
+
+{
+    my $input_filename = File::Spec->catfile(File::Spec->curdir(),
+        qw(
+        t data sample-solutions 
+        fcs-larrysan-kings-only-0-freecells-unlimited-move.txt
+        )
+    );
+
+    open (my $input_fh, "<", $input_filename)
+        or die "Cannot open file $!";
+
+    my $fc_variant_params =
+        Games::Solitaire::Verify::VariantParams->new(
+            {
+                'num_decks' => 1,
+                'num_columns' => 8,
+                'num_freecells' => 0,
+                'sequence_move' => "unlimited",
+                'seq_build_by' => "alt_color",
+                'empty_stacks_filled_by' => "kings",
+            }
+        );
+
+    # Initialise a column
+    my $solution = Games::Solitaire::Verify::Solution->new(
+        {
+            input_fh => $input_fh,
+            variant => "custom",
+            variant_params => $fc_variant_params,
+        },
+    );
+
+    my $verdict = $solution->verify();
+    # TEST
+    ok (!$verdict, "Solution of Zero-freecell, unlimited move, kings-only freecell is OK.")
+        or diag("Verdict == " . Dumper($verdict));
+
+    close($input_fh);
+}

Games-Solitaire-Verify/Games-Solitaire-Verify/t/data/sample-solutions/fcs-larrysan-kings-only-0-freecells-unlimited-move.txt

+-=-=-=-=-=-=-=-=-=-=-=-
+
+Foundations: H-0 C-0 D-0 S-0 
+Freecells: 
+: 8S 2H 9S 6D 5C 7S 8H
+: JC 2S 5H 7D TC 4D 2C
+: KC KH 4C 5S AC 3D 9C
+: KS 4H QD 2D 6S 8C AS
+: 7C TD JS TH JD 7H
+: TS 3S 8D 3C 4S KD
+: 9H 6C 5D AD QC AH
+: QH JH QS 3H 9D 6H
+
+
+====================
+
+Move a card from stack 6 to the foundations
+
+Foundations: H-A C-0 D-0 S-0 
+Freecells: 
+: 8S 2H 9S 6D 5C 7S 8H
+: JC 2S 5H 7D TC 4D 2C
+: KC KH 4C 5S AC 3D 9C
+: KS 4H QD 2D 6S 8C AS
+: 7C TD JS TH JD 7H
+: TS 3S 8D 3C 4S KD
+: 9H 6C 5D AD QC
+: QH JH QS 3H 9D 6H
+
+
+====================
+
+Move a card from stack 3 to the foundations
+
+Foundations: H-A C-0 D-0 S-A 
+Freecells: 
+: 8S 2H 9S 6D 5C 7S 8H
+: JC 2S 5H 7D TC 4D 2C
+: KC KH 4C 5S AC 3D 9C
+: KS 4H QD 2D 6S 8C
+: 7C TD JS TH JD 7H
+: TS 3S 8D 3C 4S KD
+: 9H 6C 5D AD QC
+: QH JH QS 3H 9D 6H
+
+
+====================
+
+Move 1 cards from stack 4 to stack 3
+
+Foundations: H-A C-0 D-0 S-A 
+Freecells: 
+: 8S 2H 9S 6D 5C 7S 8H
+: JC 2S 5H 7D TC 4D 2C
+: KC KH 4C 5S AC 3D 9C
+: KS 4H QD 2D 6S 8C 7H
+: 7C TD JS TH JD
+: TS 3S 8D 3C 4S KD
+: 9H 6C 5D AD QC
+: QH JH QS 3H 9D 6H
+
+
+====================
+
+Move 1 cards from stack 4 to stack 6
+
+Foundations: H-A C-0 D-0 S-A 
+Freecells: 
+: 8S 2H 9S 6D 5C 7S 8H
+: JC 2S 5H 7D TC 4D 2C
+: KC KH 4C 5S AC 3D 9C
+: KS 4H QD 2D 6S 8C 7H
+: 7C TD JS TH
+: TS 3S 8D 3C 4S KD
+: 9H 6C 5D AD QC JD
+: QH JH QS 3H 9D 6H
+
+
+====================
+
+Move 1 cards from stack 0 to stack 2
+
+Foundations: H-A C-0 D-0 S-A 
+Freecells: 
+: 8S 2H 9S 6D 5C 7S
+: JC 2S 5H 7D TC 4D 2C
+: KC KH 4C 5S AC 3D 9C 8H
+: KS 4H QD 2D 6S 8C 7H
+: 7C TD JS TH
+: TS 3S 8D 3C 4S KD
+: 9H 6C 5D AD QC JD
+: QH JH QS 3H 9D 6H
+
+
+====================
+
+Move 1 cards from stack 0 to stack 2
+
+Foundations: H-A C-0 D-0 S-A 
+Freecells: 
+: 8S 2H 9S 6D 5C
+: JC 2S 5H 7D TC 4D 2C
+: KC KH 4C 5S AC 3D 9C 8H 7S
+: KS 4H QD 2D 6S 8C 7H
+: 7C TD JS TH
+: TS 3S 8D 3C 4S KD
+: 9H 6C 5D AD QC JD
+: QH JH QS 3H 9D 6H
+
+
+====================
+
+Move 2 cards from stack 0 to stack 2
+
+Foundations: H-A C-0 D-0 S-A 
+Freecells: 
+: 8S 2H 9S
+: JC 2S 5H 7D TC 4D 2C
+: KC KH 4C 5S AC 3D 9C 8H 7S 6D 5C
+: KS 4H QD 2D 6S 8C 7H
+: 7C TD JS TH
+: TS 3S 8D 3C 4S KD
+: 9H 6C 5D AD QC JD
+: QH JH QS 3H 9D 6H
+
+
+====================
+
+Move 2 cards from stack 6 to stack 5
+
+Foundations: H-A C-0 D-0 S-A 
+Freecells: 
+: 8S 2H 9S
+: JC 2S 5H 7D TC 4D 2C
+: KC KH 4C 5S AC 3D 9C 8H 7S 6D 5C
+: KS 4H QD 2D 6S 8C 7H
+: 7C TD JS TH
+: TS 3S 8D 3C 4S KD QC JD
+: 9H 6C 5D AD
+: QH JH QS 3H 9D 6H
+
+
+====================
+
+Move a card from stack 6 to the foundations
+
+Foundations: H-A C-0 D-A S-A 
+Freecells: 
+: 8S 2H 9S
+: JC 2S 5H 7D TC 4D 2C
+: KC KH 4C 5S AC 3D 9C 8H 7S 6D 5C
+: KS 4H QD 2D 6S 8C 7H
+: 7C TD JS TH
+: TS 3S 8D 3C 4S KD QC JD
+: 9H 6C 5D
+: QH JH QS 3H 9D 6H
+
+
+====================
+
+Move 2 cards from stack 6 to stack 3
+
+Foundations: H-A C-0 D-A S-A 
+Freecells: 
+: 8S 2H 9S
+: JC 2S 5H 7D TC 4D 2C
+: KC KH 4C 5S AC 3D 9C 8H 7S 6D 5C
+: KS 4H QD 2D 6S 8C 7H 6C 5D
+: 7C TD JS TH
+: TS 3S 8D 3C 4S KD QC JD
+: 9H
+: QH JH QS 3H 9D 6H
+
+
+====================
+
+Move 5 cards from stack 2 to stack 4
+
+Foundations: H-A C-0 D-A S-A 
+Freecells: 
+: 8S 2H 9S
+: JC 2S 5H 7D TC 4D 2C
+: KC KH 4C 5S AC 3D
+: KS 4H QD 2D 6S 8C 7H 6C 5D
+: 7C TD JS TH 9C 8H 7S 6D 5C
+: TS 3S 8D 3C 4S KD QC JD
+: 9H
+: QH JH QS 3H 9D 6H
+
+
+====================
+
+Move 1 cards from stack 1 to stack 2
+
+Foundations: H-A C-0 D-A S-A 
+Freecells: 
+: 8S 2H 9S
+: JC 2S 5H 7D TC 4D
+: KC KH 4C 5S AC 3D 2C
+: KS 4H QD 2D 6S 8C 7H 6C 5D
+: 7C TD JS TH 9C 8H 7S 6D 5C
+: TS 3S 8D 3C 4S KD QC JD
+: 9H
+: QH JH QS 3H 9D 6H
+
+
+====================
+
+Move 1 cards from stack 1 to stack 4
+
+Foundations: H-A C-0 D-A S-A 
+Freecells: 
+: 8S 2H 9S
+: JC 2S 5H 7D TC
+: KC KH 4C 5S AC 3D 2C
+: KS 4H QD 2D 6S 8C 7H 6C 5D
+: 7C TD JS TH 9C 8H 7S 6D 5C 4D
+: TS 3S 8D 3C 4S KD QC JD
+: 9H
+: QH JH QS 3H 9D 6H
+
+
+====================
+
+Move 1 cards from stack 6 to stack 1
+
+Foundations: H-A C-0 D-A S-A 
+Freecells: 
+: 8S 2H 9S
+: JC 2S 5H 7D TC 9H
+: KC KH 4C 5S AC 3D 2C
+: KS 4H QD 2D 6S 8C 7H 6C 5D
+: 7C TD JS TH 9C 8H 7S 6D 5C 4D
+: TS 3S 8D 3C 4S KD QC JD
+: 
+: QH JH QS 3H 9D 6H
+
+
+====================
+
+Move 2 cards from stack 1 to stack 5
+
+Foundations: H-A C-0 D-A S-A 
+Freecells: 
+: 8S 2H 9S
+: JC 2S 5H 7D
+: KC KH 4C 5S AC 3D 2C
+: KS 4H QD 2D 6S 8C 7H 6C 5D
+: 7C TD JS TH 9C 8H 7S 6D 5C 4D
+: TS 3S 8D 3C 4S KD QC JD TC 9H
+: 
+: QH JH QS 3H 9D 6H
+
+
+====================
+
+Move 4 cards from stack 3 to stack 5
+
+Foundations: H-A C-0 D-A S-A 
+Freecells: 
+: 8S 2H 9S
+: JC 2S 5H 7D
+: KC KH 4C 5S AC 3D 2C
+: KS 4H QD 2D 6S
+: 7C TD JS TH 9C 8H 7S 6D 5C 4D
+: TS 3S 8D 3C 4S KD QC JD TC 9H 8C 7H 6C 5D
+: 
+: QH JH QS 3H 9D 6H
+
+
+====================
+
+Move 1 cards from stack 3 to stack 1
+
+Foundations: H-A C-0 D-A S-A 
+Freecells: 
+: 8S 2H 9S
+: JC 2S 5H 7D 6S
+: KC KH 4C 5S AC 3D 2C
+: KS 4H QD 2D
+: 7C TD JS TH 9C 8H 7S 6D 5C 4D
+: TS 3S 8D 3C 4S KD QC JD TC 9H 8C 7H 6C 5D
+: 
+: QH JH QS 3H 9D 6H
+
+
+====================
+
+Move a card from stack 3 to the foundations
+
+Foundations: H-A C-0 D-2 S-A 
+Freecells: 
+: 8S 2H 9S
+: JC 2S 5H 7D 6S
+: KC KH 4C 5S AC 3D 2C
+: KS 4H QD
+: 7C TD JS TH 9C 8H 7S 6D 5C 4D
+: TS 3S 8D 3C 4S KD QC JD TC 9H 8C 7H 6C 5D
+: 
+: QH JH QS 3H 9D 6H
+
+
+====================
+
+Move 8 cards from stack 4 to stack 3
+
+Foundations: H-A C-0 D-2 S-A 
+Freecells: 
+: 8S 2H 9S
+: JC 2S 5H 7D 6S
+: KC KH 4C 5S AC 3D 2C
+: KS 4H QD JS TH 9C 8H 7S 6D 5C 4D
+: 7C TD
+: TS 3S 8D 3C 4S KD QC JD TC 9H 8C 7H 6C 5D
+: 
+: QH JH QS 3H 9D 6H
+
+
+====================
+
+Move 1 cards from stack 0 to stack 4
+
+Foundations: H-A C-0 D-2 S-A 
+Freecells: 
+: 8S 2H
+: JC 2S 5H 7D 6S
+: KC KH 4C 5S AC 3D 2C
+: KS 4H QD JS TH 9C 8H 7S 6D 5C 4D
+: 7C TD 9S
+: TS 3S 8D 3C 4S KD QC JD TC 9H 8C 7H 6C 5D
+: 
+: QH JH QS 3H 9D 6H
+
+
+====================
+
+Move a card from stack 0 to the foundations
+
+Foundations: H-2 C-0 D-2 S-A 
+Freecells: 
+: 8S
+: JC 2S 5H 7D 6S
+: KC KH 4C 5S AC 3D 2C
+: KS 4H QD JS TH 9C 8H 7S 6D 5C 4D
+: 7C TD 9S
+: TS 3S 8D 3C 4S KD QC JD TC 9H 8C 7H 6C 5D
+: 
+: QH JH QS 3H 9D 6H
+
+
+====================
+
+Move 2 cards from stack 1 to stack 0
+
+Foundations: H-2 C-0 D-2 S-A 
+Freecells: 
+: 8S 7D 6S
+: JC 2S 5H
+: KC KH 4C 5S AC 3D 2C
+: KS 4H QD JS TH 9C 8H 7S 6D 5C 4D
+: 7C TD 9S
+: TS 3S 8D 3C 4S KD QC JD TC 9H 8C 7H 6C 5D
+: 
+: QH JH QS 3H 9D 6H
+
+
+====================
+
+Move 1 cards from stack 1 to stack 0
+
+Foundations: H-2 C-0 D-2 S-A 
+Freecells: 
+: 8S 7D 6S 5H
+: JC 2S
+: KC KH 4C 5S AC 3D 2C
+: KS 4H QD JS TH 9C 8H 7S 6D 5C 4D
+: 7C TD 9S
+: TS 3S 8D 3C 4S KD QC JD TC 9H 8C 7H 6C 5D
+: 
+: QH JH QS 3H 9D 6H
+
+
+====================
+
+Move a card from stack 1 to the foundations
+
+Foundations: H-2 C-0 D-2 S-2 
+Freecells: 
+: 8S 7D 6S 5H
+: JC
+: KC KH 4C 5S AC 3D 2C
+: KS 4H QD JS TH 9C 8H 7S 6D 5C 4D
+: 7C TD 9S
+: TS 3S 8D 3C 4S KD QC JD TC 9H 8C 7H 6C 5D
+: 
+: QH JH QS 3H 9D 6H
+
+
+====================
+
+Move 2 cards from stack 4 to stack 1
+
+Foundations: H-2 C-0 D-2 S-2 
+Freecells: 
+: 8S 7D 6S 5H
+: JC TD 9S
+: KC KH 4C 5S AC 3D 2C
+: KS 4H QD JS TH 9C 8H 7S 6D 5C 4D
+: 7C
+: TS 3S 8D 3C 4S KD QC JD TC 9H 8C 7H 6C 5D
+: 
+: QH JH QS 3H 9D 6H
+
+
+====================
+
+Move 1 cards from stack 7 to stack 4
+
+Foundations: H-2 C-0 D-2 S-2 
+Freecells: 
+: 8S 7D 6S 5H
+: JC TD 9S
+: KC KH 4C 5S AC 3D 2C
+: KS 4H QD JS TH 9C 8H 7S 6D 5C 4D
+: 7C 6H
+: TS 3S 8D 3C 4S KD QC JD TC 9H 8C 7H 6C 5D
+: 
+: QH JH QS 3H 9D
+
+
+====================
+
+Move 4 cards from stack 0 to stack 7
+
+Foundations: H-2 C-0 D-2 S-2 
+Freecells: 
+: 
+: JC TD 9S
+: KC KH 4C 5S AC 3D 2C
+: KS 4H QD JS TH 9C 8H 7S 6D 5C 4D
+: 7C 6H
+: TS 3S 8D 3C 4S KD QC JD TC 9H 8C 7H 6C 5D
+: 
+: QH JH QS 3H 9D 8S 7D 6S 5H
+
+
+====================
+
+Move 9 cards from stack 5 to stack 6
+
+Foundations: H-2 C-0 D-2 S-2 
+Freecells: 
+: 
+: JC TD 9S
+: KC KH 4C 5S AC 3D 2C
+: KS 4H QD JS TH 9C 8H 7S 6D 5C 4D
+: 7C 6H
+: TS 3S 8D 3C 4S
+: KD QC JD TC 9H 8C 7H 6C 5D
+: QH JH QS 3H 9D 8S 7D 6S 5H
+
+
+====================
+
+Move 1 cards from stack 5 to stack 7
+
+Foundations: H-2 C-0 D-2 S-2 
+Freecells: 
+: 
+: JC TD 9S
+: KC KH 4C 5S AC 3D 2C
+: KS 4H QD JS TH 9C 8H 7S 6D 5C 4D
+: 7C 6H
+: TS 3S 8D 3C
+: KD QC JD TC 9H 8C 7H 6C 5D
+: QH JH QS 3H 9D 8S 7D 6S 5H 4S
+
+
+====================
+
+Move 1 cards from stack 5 to stack 3
+
+Foundations: H-2 C-0 D-2 S-2 
+Freecells: 
+: 
+: JC TD 9S
+: KC KH 4C 5S AC 3D 2C
+: KS 4H QD JS TH 9C 8H 7S 6D 5C 4D 3C
+: 7C 6H
+: TS 3S 8D
+: KD QC JD TC 9H 8C 7H 6C 5D
+: QH JH QS 3H 9D 8S 7D 6S 5H 4S
+
+
+====================
+
+Move 2 cards from stack 4 to stack 5
+
+Foundations: H-2 C-0 D-2 S-2 
+Freecells: 
+: 
+: JC TD 9S
+: KC KH 4C 5S AC 3D 2C
+: KS 4H QD JS TH 9C 8H 7S 6D 5C 4D 3C
+: 
+: TS 3S 8D 7C 6H
+: KD QC JD TC 9H 8C 7H 6C 5D
+: QH JH QS 3H 9D 8S 7D 6S 5H 4S
+
+
+====================
+
+Move 3 cards from stack 5 to stack 1
+
+Foundations: H-2 C-0 D-2 S-2 
+Freecells: 
+: 
+: JC TD 9S 8D 7C 6H
+: KC KH 4C 5S AC 3D 2C
+: KS 4H QD JS TH 9C 8H 7S 6D 5C 4D 3C
+: 
+: TS 3S
+: KD QC JD TC 9H 8C 7H 6C 5D
+: QH JH QS 3H 9D 8S 7D 6S 5H 4S
+
+
+====================
+
+Move a card from stack 5 to the foundations
+
+Foundations: H-2 C-0 D-2 S-3 
+Freecells: 
+: 
+: JC TD 9S 8D 7C 6H
+: KC KH 4C 5S AC 3D 2C
+: KS 4H QD JS TH 9C 8H 7S 6D 5C 4D 3C
+: 
+: TS
+: KD QC JD TC 9H 8C 7H 6C 5D
+: QH JH QS 3H 9D 8S 7D 6S 5H 4S
+
+
+====================
+
+Move a card from stack 7 to the foundations
+
+Foundations: H-2 C-0 D-2 S-4 
+Freecells: 
+: 
+: JC TD 9S 8D 7C 6H
+: KC KH 4C 5S AC 3D 2C
+: KS 4H QD JS TH 9C 8H 7S 6D 5C 4D 3C
+: 
+: TS
+: KD QC JD TC 9H 8C 7H 6C 5D
+: QH JH QS 3H 9D 8S 7D 6S 5H
+
+
+====================
+
+Move 5 cards from stack 7 to stack 5
+
+Foundations: H-2 C-0 D-2 S-4 
+Freecells: 
+: 
+: JC TD 9S 8D 7C 6H
+: KC KH 4C 5S AC 3D 2C
+: KS 4H QD JS TH 9C 8H 7S 6D 5C 4D 3C
+: 
+: TS 9D 8S 7D 6S 5H
+: KD QC JD TC 9H 8C 7H 6C 5D
+: QH JH QS 3H
+
+
+====================
+
+Move 1 cards from stack 2 to stack 7
+
+Foundations: H-2 C-0 D-2 S-4 
+Freecells: 
+: 
+: JC TD 9S 8D 7C 6H
+: KC KH 4C 5S AC 3D
+: KS 4H QD JS TH 9C 8H 7S 6D 5C 4D 3C
+: 
+: TS 9D 8S 7D 6S 5H
+: KD QC JD TC 9H 8C 7H 6C 5D
+: QH JH QS 3H 2C
+
+
+====================
+
+Move a card from stack 2 to the foundations
+
+Foundations: H-2 C-0 D-3 S-4 
+Freecells: 
+: 
+: JC TD 9S 8D 7C 6H
+: KC KH 4C 5S AC
+: KS 4H QD JS TH 9C 8H 7S 6D 5C 4D 3C
+: 
+: TS 9D 8S 7D 6S 5H
+: KD QC JD TC 9H 8C 7H 6C 5D
+: QH JH QS 3H 2C
+
+
+====================
+
+Move a card from stack 2 to the foundations
+
+Foundations: H-2 C-A D-3 S-4 
+Freecells: 
+: 
+: JC TD 9S 8D 7C 6H
+: KC KH 4C 5S
+: KS 4H QD JS TH 9C 8H 7S 6D 5C 4D 3C
+: 
+: TS 9D 8S 7D 6S 5H
+: KD QC JD TC 9H 8C 7H 6C 5D
+: QH JH QS 3H 2C
+
+
+====================
+
+Move a card from stack 7 to the foundations
+
+Foundations: H-2 C-2 D-3 S-4 
+Freecells: 
+: 
+: JC TD 9S 8D 7C 6H
+: KC KH 4C 5S
+: KS 4H QD JS TH 9C 8H 7S 6D 5C 4D 3C
+: 
+: TS 9D 8S 7D 6S 5H
+: KD QC JD TC 9H 8C 7H 6C 5D
+: QH JH QS 3H
+
+
+====================
+
+Move a card from stack 7 to the foundations
+
+Foundations: H-3 C-2 D-3 S-4 
+Freecells: 
+: 
+: JC TD 9S 8D 7C 6H
+: KC KH 4C 5S
+: KS 4H QD JS TH 9C 8H 7S 6D 5C 4D 3C
+: 
+: TS 9D 8S 7D 6S 5H
+: KD QC JD TC 9H 8C 7H 6C 5D
+: QH JH QS
+
+
+====================
+
+Move a card from stack 2 to the foundations
+
+Foundations: H-3 C-2 D-3 S-5 
+Freecells: 
+: 
+: JC TD 9S 8D 7C 6H
+: KC KH 4C
+: KS 4H QD JS TH 9C 8H 7S 6D 5C 4D 3C
+: 
+: TS 9D 8S 7D 6S 5H
+: KD QC JD TC 9H 8C 7H 6C 5D
+: QH JH QS
+
+
+====================
+
+Move a card from stack 3 to the foundations
+
+Foundations: H-3 C-3 D-3 S-5 
+Freecells: 
+: 
+: JC TD 9S 8D 7C 6H
+: KC KH 4C
+: KS 4H QD JS TH 9C 8H 7S 6D 5C 4D
+: 
+: TS 9D 8S 7D 6S 5H
+: KD QC JD TC 9H 8C 7H 6C 5D
+: QH JH QS
+
+
+====================
+
+Move a card from stack 2 to the foundations
+
+Foundations: H-3 C-4 D-3 S-5 
+Freecells: 
+: 
+: JC TD 9S 8D 7C 6H
+: KC KH
+: KS 4H QD JS TH 9C 8H 7S 6D 5C 4D
+: 
+: TS 9D 8S 7D 6S 5H
+: KD QC JD TC 9H 8C 7H 6C 5D
+: QH JH QS
+
+
+====================
+
+Move a card from stack 3 to the foundations
+
+Foundations: H-3 C-4 D-4 S-5 
+Freecells: 
+: 
+: JC TD 9S 8D 7C 6H
+: KC KH
+: KS 4H QD JS TH 9C 8H 7S 6D 5C
+: 
+: TS 9D 8S 7D 6S 5H
+: KD QC JD TC 9H 8C 7H 6C 5D
+: QH JH QS
+
+
+====================
+
+Move a card from stack 6 to the foundations
+
+Foundations: H-3 C-4 D-5 S-5 
+Freecells: 
+: 
+: JC TD 9S 8D 7C 6H
+: KC KH
+: KS 4H QD JS TH 9C 8H 7S 6D 5C
+: 
+: TS 9D 8S 7D 6S 5H
+: KD QC JD TC 9H 8C 7H 6C
+: QH JH QS
+
+
+====================
+
+Move a card from stack 3 to the foundations
+
+Foundations: H-3 C-5 D-5 S-5 
+Freecells: 
+: 
+: JC TD 9S 8D 7C 6H
+: KC KH
+: KS 4H QD JS TH 9C 8H 7S 6D
+: 
+: TS 9D 8S 7D 6S 5H
+: KD QC JD TC 9H 8C 7H 6C
+: QH JH QS
+
+
+====================
+
+Move a card from stack 6 to the foundations
+
+Foundations: H-3 C-6 D-5 S-5 
+Freecells: 
+: 
+: JC TD 9S 8D 7C 6H
+: KC KH
+: KS 4H QD JS TH 9C 8H 7S 6D
+: 
+: TS 9D 8S 7D 6S 5H
+: KD QC JD TC 9H 8C 7H
+: QH JH QS
+
+
+====================
+
+Move a card from stack 3 to the foundations
+
+Foundations: H-3 C-6 D-6 S-5 
+Freecells: 
+: 
+: JC TD 9S 8D 7C 6H
+: KC KH
+: KS 4H QD JS TH 9C 8H 7S
+: 
+: TS 9D 8S 7D 6S 5H
+: KD QC JD TC 9H 8C 7H
+: QH JH QS
+
+
+====================
+
+Move 1 cards from stack 7 to stack 2
+
+Foundations: H-3 C-6 D-6 S-5 
+Freecells: 
+: 
+: JC TD 9S 8D 7C 6H
+: KC KH QS
+: KS 4H QD JS TH 9C 8H 7S
+: 
+: TS 9D 8S 7D 6S 5H
+: KD QC JD TC 9H 8C 7H
+: QH JH
+
+
+====================
+
+Move 6 cards from stack 5 to stack 7
+
+Foundations: H-3 C-6 D-6 S-5 
+Freecells: 
+: 
+: JC TD 9S 8D 7C 6H
+: KC KH QS
+: KS 4H QD JS TH 9C 8H 7S
+: 
+: 
+: KD QC JD TC 9H 8C 7H
+: QH JH TS 9D 8S 7D 6S 5H
+
+
+====================
+
+Move 7 cards from stack 7 to stack 2
+
+Foundations: H-3 C-6 D-6 S-5 
+Freecells: 
+: 
+: JC TD 9S 8D 7C 6H
+: KC KH QS JH TS 9D 8S 7D 6S 5H
+: KS 4H QD JS TH 9C 8H 7S
+: 
+: 
+: KD QC JD TC 9H 8C 7H
+: QH
+
+
+====================
+
+Move 6 cards from stack 1 to stack 7
+
+Foundations: H-3 C-6 D-6 S-5 
+Freecells: 
+: 
+: 
+: KC KH QS JH TS 9D 8S 7D 6S 5H
+: KS 4H QD JS TH 9C 8H 7S
+: 
+: 
+: KD QC JD TC 9H 8C 7H
+: QH JC TD 9S 8D 7C 6H
+
+
+====================
+
+Move 9 cards from stack 2 to stack 0
+
+Foundations: H-3 C-6 D-6 S-5 
+Freecells: 
+: KH QS JH TS 9D 8S 7D 6S 5H
+: 
+: KC
+: KS 4H QD JS TH 9C 8H 7S
+: 
+: 
+: KD QC JD TC 9H 8C 7H
+: QH JC TD 9S 8D 7C 6H
+
+
+====================
+
+Move 7 cards from stack 7 to stack 2
+
+Foundations: H-3 C-6 D-6 S-5 
+Freecells: 
+: KH QS JH TS 9D 8S 7D 6S 5H
+: 
+: KC QH JC TD 9S 8D 7C 6H
+: KS 4H QD JS TH 9C 8H 7S
+: 
+: 
+: KD QC JD TC 9H 8C 7H
+: 
+
+
+====================
+
+Move 2 cards from stack 0 to stack 6
+
+Foundations: H-3 C-6 D-6 S-5 
+Freecells: 
+: KH QS JH TS 9D 8S 7D
+: 
+: KC QH JC TD 9S 8D 7C 6H
+: KS 4H QD JS TH 9C 8H 7S
+: 
+: 
+: KD QC JD TC 9H 8C 7H 6S 5H
+: 
+
+
+====================
+
+Move a card from stack 0 to the foundations
+
+Foundations: H-3 C-6 D-7 S-5 
+Freecells: 
+: KH QS JH TS 9D 8S
+: 
+: KC QH JC TD 9S 8D 7C 6H
+: KS 4H QD JS TH 9C 8H 7S
+: 
+: 
+: KD QC JD TC 9H 8C 7H 6S 5H
+: 
+
+
+====================
+
+Move 1 cards from stack 2 to stack 3
+
+Foundations: H-3 C-6 D-7 S-5 
+Freecells: 
+: KH QS JH TS 9D 8S
+: 
+: KC QH JC TD 9S 8D 7C
+: KS 4H QD JS TH 9C 8H 7S 6H
+: 
+: 
+: KD QC JD TC 9H 8C 7H 6S 5H
+: 
+
+
+====================
+
+Move a card from stack 2 to the foundations
+
+Foundations: H-3 C-7 D-7 S-5 
+Freecells: 
+: KH QS JH TS 9D 8S
+: 
+: KC QH JC TD 9S 8D
+: KS 4H QD JS TH 9C 8H 7S 6H
+: 
+: 
+: KD QC JD TC 9H 8C 7H 6S 5H
+: 
+
+
+====================
+
+Move a card from stack 2 to the foundations
+
+Foundations: H-3 C-7 D-8 S-5 
+Freecells: 
+: KH QS JH TS 9D 8S
+: 
+: KC QH JC TD 9S
+: KS 4H QD JS TH 9C 8H 7S 6H
+: 
+: 
+: KD QC JD TC 9H 8C 7H 6S 5H
+: 
+
+
+====================
+
+Move 3 cards from stack 6 to stack 0
+
+Foundations: H-3 C-7 D-8 S-5 
+Freecells: 
+: KH QS JH TS 9D 8S 7H 6S 5H
+: 
+: KC QH JC TD 9S
+: KS 4H QD JS TH 9C 8H 7S 6H
+: 
+: 
+: KD QC JD TC 9H 8C
+: 
+
+
+====================
+
+Move a card from stack 6 to the foundations
+
+Foundations: H-3 C-8 D-8 S-5 
+Freecells: 
+: KH QS JH TS 9D 8S 7H 6S 5H
+: 
+: KC QH JC TD 9S
+: KS 4H QD JS TH 9C 8H 7S 6H
+: 
+: 
+: KD QC JD TC 9H
+: 
+
+
+====================
+
+Move 4 cards from stack 0 to stack 6
+
+Foundations: H-3 C-8 D-8 S-5 
+Freecells: 
+: KH QS JH TS 9D
+: 
+: KC QH JC TD 9S
+: KS 4H QD JS TH 9C 8H 7S 6H
+: 
+: 
+: KD QC JD TC 9H 8S 7H 6S 5H
+: 
+
+
+====================
+
+Move a card from stack 0 to the foundations
+
+Foundations: H-3 C-8 D-9 S-5 
+Freecells: 
+: KH QS JH TS
+: 
+: KC QH JC TD 9S
+: KS 4H QD JS TH 9C 8H 7S 6H
+: 
+: 
+: KD QC JD TC 9H 8S 7H 6S 5H
+: 
+
+
+====================
+
+Move 5 cards from stack 6 to stack 0
+
+Foundations: H-3 C-8 D-9 S-5 
+Freecells: 
+: KH QS JH TS 9H 8S 7H 6S 5H
+: 
+: KC QH JC TD 9S
+: KS 4H QD JS TH 9C 8H 7S 6H
+: 
+: 
+: KD QC JD TC
+: 
+
+
+====================
+
+Move 3 cards from stack 3 to stack 2
+
+Foundations: H-3 C-8 D-9 S-5 
+Freecells: 
+: KH QS JH TS 9H 8S 7H 6S 5H
+: 
+: KC QH JC TD 9S 8H 7S 6H
+: KS 4H QD JS TH 9C
+: 
+: 
+: KD QC JD TC
+: 
+
+
+====================
+
+Move a card from stack 3 to the foundations
+
+Foundations: H-3 C-9 D-9 S-5 
+Freecells: 
+: KH QS JH TS 9H 8S 7H 6S 5H
+: 
+: KC QH JC TD 9S 8H 7S 6H
+: KS 4H QD JS TH
+: 
+: 
+: KD QC JD TC
+: 
+
+
+====================
+
+Move a card from stack 6 to the foundations
+
+Foundations: H-3 C-T D-9 S-5 
+Freecells: 
+: KH QS JH TS 9H 8S 7H 6S 5H
+: 
+: KC QH JC TD 9S 8H 7S 6H
+: KS 4H QD JS TH
+: 
+: 
+: KD QC JD
+: 
+
+
+====================
+
+Move 6 cards from stack 0 to stack 6
+
+Foundations: H-3 C-T D-9 S-5 
+Freecells: 
+: KH QS JH
+: 
+: KC QH JC TD 9S 8H 7S 6H
+: KS 4H QD JS TH
+: 
+: 
+: KD QC JD TS 9H 8S 7H 6S 5H
+: 
+
+
+====================
+
+Move 4 cards from stack 2 to stack 3
+
+Foundations: H-3 C-T D-9 S-5 
+Freecells: 
+: KH QS JH
+: 
+: KC QH JC TD
+: KS 4H QD JS TH 9S 8H 7S 6H
+: 
+: 
+: KD QC JD TS 9H 8S 7H 6S 5H
+: 
+
+
+====================
+
+Move a card from stack 2 to the foundations
+
+Foundations: H-3 C-T D-T S-5 
+Freecells: 
+: KH QS JH
+: 
+: KC QH JC
+: KS 4H QD JS TH 9S 8H 7S 6H
+: 
+: 
+: KD QC JD TS 9H 8S 7H 6S 5H
+: 
+
+
+====================
+
+Move a card from stack 2 to the foundations
+
+Foundations: H-3 C-J D-T S-5 
+Freecells: 
+: KH QS JH
+: 
+: KC QH
+: KS 4H QD JS TH 9S 8H 7S 6H
+: 
+: 
+: KD QC JD TS 9H 8S 7H 6S 5H
+: 
+
+
+====================
+
+Move 6 cards from stack 6 to stack 0
+
+Foundations: H-3 C-J D-T S-5 
+Freecells: 
+: KH QS JH TS 9H 8S 7H 6S 5H
+: 
+: KC QH
+: KS 4H QD JS TH 9S 8H 7S 6H
+: 
+: 
+: KD QC JD
+: 
+
+
+====================
+
+Move a card from stack 6 to the foundations
+
+Foundations: H-3 C-J D-J S-5 
+Freecells: 
+: KH QS JH TS 9H 8S 7H 6S 5H
+: 
+: KC QH
+: KS 4H QD JS TH 9S 8H 7S 6H
+: 
+: 
+: KD QC
+: 
+
+
+====================
+
+Move a card from stack 6 to the foundations
+
+Foundations: H-3 C-Q D-J S-5 
+Freecells: 
+: KH QS JH TS 9H 8S 7H 6S 5H
+: 
+: KC QH
+: KS 4H QD JS TH 9S 8H 7S 6H
+: 
+: 
+: KD
+: 
+
+
+====================
+
+Move 8 cards from stack 0 to stack 6
+
+Foundations: H-3 C-Q D-J S-5 
+Freecells: 
+: KH
+: 
+: KC QH
+: KS 4H QD JS TH 9S 8H 7S 6H
+: 
+: 
+: KD QS JH TS 9H 8S 7H 6S 5H
+: 
+
+
+====================
+
+Move 6 cards from stack 3 to stack 2
+
+Foundations: H-3 C-Q D-J S-5 
+Freecells: 
+: KH
+: 
+: KC QH JS TH 9S 8H 7S 6H
+: KS 4H QD
+: 
+: 
+: KD QS JH TS 9H 8S 7H 6S 5H
+: 
+
+
+====================
+
+Move a card from stack 3 to the foundations
+
+Foundations: H-3 C-Q D-Q S-5 
+Freecells: 
+: KH
+: 
+: KC QH JS TH 9S 8H 7S 6H
+: KS 4H
+: 
+: 
+: KD QS JH TS 9H 8S 7H 6S 5H
+: 
+
+
+====================
+
+Move a card from stack 3 to the foundations
+
+Foundations: H-4 C-Q D-Q S-5 
+Freecells: 
+: KH
+: 
+: KC QH JS TH 9S 8H 7S 6H
+: KS
+: 
+: 
+: KD QS JH TS 9H 8S 7H 6S 5H
+: 
+
+
+====================
+
+Move a card from stack 6 to the foundations
+
+Foundations: H-5 C-Q D-Q S-5 
+Freecells: 
+: KH
+: 
+: KC QH JS TH 9S 8H 7S 6H
+: KS
+: 
+: 
+: KD QS JH TS 9H 8S 7H 6S
+: 
+
+
+====================
+
+Move a card from stack 2 to the foundations
+
+Foundations: H-6 C-Q D-Q S-5 
+Freecells: 
+: KH
+: 
+: KC QH JS TH 9S 8H 7S
+: KS
+: 
+: 
+: KD QS JH TS 9H 8S 7H 6S
+: 
+
+
+====================
+
+Move a card from stack 6 to the foundations
+
+Foundations: H-6 C-Q D-Q S-6 
+Freecells: 
+: KH
+: 
+: KC QH JS TH 9S 8H 7S
+: KS
+: 
+: 
+: KD QS JH TS 9H 8S 7H
+: 
+
+
+====================
+
+Move a card from stack 2 to the foundations
+
+Foundations: H-6 C-Q D-Q S-7 
+Freecells: 
+: KH
+: 
+: KC QH JS TH 9S 8H
+: KS
+: 
+: 
+: KD QS JH TS 9H 8S 7H
+: 
+
+
+====================
+
+Move a card from stack 6 to the foundations
+
+Foundations: H-7 C-Q D-Q S-7 
+Freecells: 
+: KH
+: 
+: KC QH JS TH 9S 8H
+: KS
+: 
+: 
+: KD QS JH TS 9H 8S
+: 
+
+
+====================
+
+Move a card from stack 2 to the foundations
+
+Foundations: H-8 C-Q D-Q S-7 
+Freecells: 
+: KH
+: 
+: KC QH JS TH 9S
+: KS
+: 
+: 
+: KD QS JH TS 9H 8S
+: 
+
+
+====================
+
+Move a card from stack 6 to the foundations
+
+Foundations: H-8 C-Q D-Q S-8 
+Freecells: 
+: KH
+: 
+: KC QH JS TH 9S
+: KS
+: 
+: 
+: KD QS JH TS 9H
+: 
+
+
+====================
+
+Move a card from stack 2 to the foundations
+
+Foundations: H-8 C-Q D-Q S-9 
+Freecells: 
+: KH
+: 
+: KC QH JS TH
+: KS
+: 
+: 
+: KD QS JH TS 9H
+: 
+
+
+====================
+
+Move a card from stack 6 to the foundations
+
+Foundations: H-9 C-Q D-Q S-9 
+Freecells: 
+: KH
+: 
+: KC QH JS TH
+: KS
+: 
+: 
+: KD QS JH TS