reworked puzzle datastructure:
sub create_puzzle_object {
my @data = @_;
my ( @square, @row, @col, @block );
for my $ssqr ( 0..$#data )
{
my $srow = int( $ssqr / 9 );
my $scol = $ssqr % 9;
my $sblk = int( $scol / 3 ) + int( $srow / 3 ) * 3;
my $known = ( $data[$ssqr] =~ m/^[1-9]$/ ) ? 1 : 0;
my $sqobj = {
guess => ( $known ? [] : [ 1..9 ] ),
known => ( $known ? 1 : 0 ),
value => ( $known ? $data[$ssqr] : undef ),
row => $srow,
col => $scol,
block => $sblk,
square=> $ssqr,
};
push @$_, $sqobj
for ( \@square, $row[$srow], $col[$scol], $block[$sblk] );
}
return {
square => \@square,
col => \@col,
row => \@row,
block => \@block,
patience => GRIDSIZE * 2,
};
}