Algorithm-Search
view release on metacpan or search on metacpan
#!/usr/bin/perl
#Copyright 2008 Arthur S Goldstein
#Games Magazine, July 2008 page 28
use Test::More tests => 22;
package pearls_of_wisdom;
#our $xx = 0;
sub new {my $self = {moves => 1, row => 0, column => 0};
$self->{value}->[0]->[0] = 1; return bless $self}
sub set_rules {
my $self = shift;
my $parameters = shift;
$self->{max_row} = $parameters->{max_row};
$self->{max_column} = $parameters->{max_column};
$self->{in_moves} = $parameters->{in_moves};
$self->{fixed_value} = $parameters->{fixed_value};
}
sub move {
my $self = shift;
my $move = shift;
#$xx++;
#print STDERR "Considering move $move, current row ".$self->{row};
#print STDERR " current column ".$self->{column};
#print STDERR " $xx move number ".$self->{moves};
#print STDERR "\n";
if ($move eq 'U') {
#print STDERR "considering U move\n";
if ($self->{row} == 0) { return}
else {
$self->{value}->[$self->{row}]->[$self->{column}] .= 'U';
$self->{row}--;
};
}
elsif ($move eq 'D') {
if ($self->{row} == $self->{max_row}) { return}
else {
$self->{value}->[$self->{row}]->[$self->{column}] .= 'D';
$self->{row}++
};
}
elsif ($move eq 'L') {
if ($self->{column} == 0) { return}
else {
$self->{value}->[$self->{row}]->[$self->{column}] .= 'L';
$self->{column}--;
};
}
elsif ($move eq 'R') {
if ($self->{column} == $self->{max_column}) { return}
else {
$self->{value}->[$self->{row}]->[$self->{column}] .= 'R';
$self->{column}++
};
}
#print STDERR "did not max out move\n";
if (defined $self->{in_moves}->[$self->{row}]->[$self->{column}]) {
$self->{out_moves}->[$self->{row}]->[$self->{column}] =
$self->{in_moves}->[$self->{row}]->[$self->{column}]->{$move} || [];
#print STDERR "set moves out ".join("..",@{$self->{out_moves}->[$self->{row}]->[$self->{column}]})."\n";
}
if (defined $self->{value}->[$self->{row}]->[$self->{column}]) {
return
}
my $value = ($self->{moves} + 1) %3;
( run in 0.690 second using v1.01-cache-2.11-cpan-e1769b4cff6 )