Algorithm-X-DLX
view release on metacpan or search on metacpan
examples/polyomino/Polyomino.pm view on Meta::CPAN
my $dx = $dyx % $shape->width();
push @row, $self->{index_}[$y + $dy][$x + $dx];
}
push @row, ($self->{size_} + $s);
$self->{problem_}->add_row(\@row);
}
}
}
return $self;
}
use Data::Dumper;
sub area {
my ($width, $height) = @_;
return [ map { [(1) x $width] } 1..$height ];
}
sub problem {
my ($self) = @_;
return $self->{problem_};
}
examples/polyomino/Shape.pm view on Meta::CPAN
sub size {
my ($self) = @_;
return $self->{width} * $self->{height};
}
sub get_bit {
my ($self, $yx) = @_;
return $self->{bits}[$yx / $self->{width}][$yx % $self->{width}];
}
use Data::Dumper;
sub equals {
my ($self, $rhs) = @_;
#print Dumper($self->{content}), "\n == ? \n" , Dumper($rhs->{content});
#exit 0;
return $self->{content} eq $rhs->{content};
# return reduce { $a &&= $_ eq $_[2] } (map { $_ eq $_[2] } @{$rhs->{bits}}) == scalar(@{$rhs->{bits}});
}
sub not_equals {
examples/t/sudoku/03-sudokusolver.t view on Meta::CPAN
"|518|462|793|\n",
"|934|571|682|\n",
"|627|938|154|\n",
"+---+---+---+\n",
"|451|387|269|\n",
"|369|215|847|\n",
"|872|694|315|\n",
"+---+---+---+\n"
);
# there is no 'isnt_deeply' in Test::More
require Data::Dumper;
my @cmp = map {Data::Dumper->new([$_])->Sortkeys(1)->Indent(0)->Dump()} ($solved, $easy);
isnt( $cmp[0], $cmp[1], 'different from start' );
is_deeply( $solved, SudokuSolver::solve($easy), 'correct solution');
};
subtest 'hard' => sub {
plan tests => 1;
my $hard = Sudoku->new(join '',
"050|002|000",
"000|100|400",
"700|000|000",
( run in 0.242 second using v1.01-cache-2.11-cpan-4d50c553e7e )