Script playSol.pl
#!/usr/bin/perl
$solFile = "solutions";
@cases;
@sym = ("X", "O", "O");
$hole;
$solution = 0;
open IN, $solFile;
while (<IN>) {
$solution++;
chomp;
@coups = split("-");
pop @coups;
&playSeq(@coups);
}
close IN;
sub playSeq {
my @moves = @_;
&reset();
foreach $move ( @moves ) {
&moveHole($move);
system("clear");
print qq/Solution $solution \n/;
print qq/(/.scalar(@moves).qq/ coups)\n\n/;
&display();
sleep(1);
}
}
sub moveHole {
$dest = shift;
$cases[$hole] = $cases[$dest];
$cases[$dest] = 0;
$hole = $dest;
}
sub reset {
@cases = (1, 1, 1, 1, 1, 1, 1, 1, 0,
2, 2, 2, 2, 2, 2, 2, 2);
$hole = 8;
}
sub display {
print qq/ $sym[$cases[2]] $sym[$cases[10]]\n/;
print " ";
for ($k=1; $k<17; $k+=4) { print qq/ $sym[$cases[$k]]/; }
print "\n";
for ($k=0; $k<17; $k+=4) { print qq/ $sym[$cases[$k]]/; }
print "\n ";
for ($k=3; $k<17; $k+=4) { print qq/ $sym[$cases[$k]]/; }
print "\n";
print qq/ $sym[$cases[6]] $sym[$cases[14]]\n\n/;
}