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 )