sudoku Puzzling in Perl #15

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,
         };
}
© fishbot