#!/usr/local/bin/perl -w $|=1; $X[0]=-2; $Y[0]=-1; $X[1]=-2; $Y[1]=+1; $X[2]=+2; $Y[2]=-1; $X[3]=+2; $Y[3]=+1; $X[4]=-1; $Y[4]=-2; $X[5]=-1; $Y[5]=+2; $X[6]=+1; $Y[6]=-2; $X[7]=+1; $Y[7]=+2; for (;;){ top: @log=(); @a=(); for $i (1..8){ for $j (1..8){ $a[$i][$j]=0; } } $a[1][1]=1; $counter=1; $xx=$yy=1; push @log, "$xx - $yy"; loop: $n = int rand(8); try: $cx = $xx+$X[$n]; $cy = $yy+$Y[$n]; $ok=1; if ($cx<=0 || $cy<=0) { $ok=0; } elsif (!defined $a[$cx][$cy]){ $ok=0; } elsif ($a[$cx][$cy]==1){ $ok=0; } if ($ok==0){ $c++; if ($c>=8){ if ($c>=25){ goto top; } $n = ++$n % 8; goto try; } goto loop; } $c=0; $counter++; $xx=$cx; $yy=$cy; $a[$xx][$yy]=1; push @log, "$xx - $yy"; if ($counter==64){ print ".\a"; open OUT, ">>".$0.".out" or die "Cannot open: $!"; for (@log){ print OUT $_, "\n"; } print OUT "-" x 40, "\n"; close OUT; goto top; } goto loop; } __END__