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/; }