Algorithm-Search
view release on metacpan or search on metacpan
'cost' => undef,
'move' => undef,
'value_before' => undef,
'value_after' => 'Minneapolis'
},
{
'commit' => undef,
'cost' => undef,
'move' => 'Duluth',
'value_before' => 'Minneapolis',
'value_after' => 'Duluth'
},
{
'commit' => undef,
'cost' => undef,
'move' => 'St. Paul',
'value_before' => 'Minneapolis',
'value_after' => 'St. Paul'
},
{
'commit' => undef,
'cost' => 0,
'move' => 'Madison',
'value_before' => 'St. Paul',
'value_after' => 'Madison'
},
{
'commit' => undef,
'cost' => 0,
'move' => 'Rockford',
'value_before' => 'Madison',
'value_after' => 'Rockford'
},
{
'commit' => undef,
'cost' => 0,
'move' => 'Bloomington',
'value_before' => 'Rockford',
'value_after' => 'Bloomington'
},
{
'commit' => undef,
'cost' => 0,
'move' => 'Chicago',
'value_before' => 'Madison',
'value_after' => 'Chicago'
},
{
'commit' => undef,
'cost' => 0,
'move' => 'Urbana',
'value_before' => 'Chicago',
'value_after' => 'Urbana'
}
],
'dfs max depth trace');
$travel_search->search({search_this => $driver,
solutions_to_find => 0,
do_not_repeat_values => 1
});
#print "dnr \n";
$full_path = '';
if ($travel_search->solution_found) { #should be true, path to Urbana
#print "found path from Minneapolis to Urbana\n";
# print join("..", @{$travel_search->path})."\n";
my $path_count = 0;
foreach my $path ($travel_search->paths) {
# print "Path ".$path_count++." ";
# print join("..", @{$path})."\n";
$full_path .= join("..", @{$path})."\n";
}
}
is ($full_path,
"St. Paul..Madison..Rockford..Bloomington..Champaign..Urbana
", 'dfs no repeat values');
$driver->move('Duluth'); #start out in Duluth
$travel_search->search({search_this => $driver,
solutions_to_find => 0,
});
$full_path = '';
if ($travel_search->solution_found) { #should be false, no path to Urbana
$full_path = 'x';
#print "found path from Duluth to Urbana\n";
}
is ($full_path, '', 'from duluth dfs');
$driver->move('Minneapolis'); #start out in Minneapolis
$driver->set_destination('Dallas');
$travel_search->search({search_this => $driver,
solutions_to_find => 0,
});
$full_path = '';
if ($travel_search->solution_found) { #should be false, path to Dallas
$full_path = 'x';
#print "found path from Minneapolis to Dallas\n";
}
is($full_path, '', 'to dallas dfs');
#print "sc3\n";
$driver->move('Minneapolis'); #start out in Minneapolis
$driver->set_destination('Urbana');
$travel_search->search({search_this => $driver,
search_type => 'bfs',
solutions_to_find => 0,
});
$full_path = '';
if ($travel_search->solution_found) { #should be true, path to Urbana
#print "found path from Minneapolis to Urbana\n";
# print join("..", @{$travel_search->path})."\n";
my $path_count = 0;
foreach my $path ($travel_search->paths) {
# print "Path ".$path_count++." ";
# print join("..", @{$path})."\n";
$full_path .= join("..", @{$path})."\n";
}
}
'cost' => undef,
'move' => undef,
'value_before' => undef,
'value_after' => 'Minneapolis'
},
{
'commit' => undef,
'cost' => undef,
'move' => 'Duluth',
'value_before' => 'Minneapolis',
'value_after' => 'Duluth'
},
{
'commit' => undef,
'cost' => undef,
'move' => 'St. Paul',
'value_before' => 'Minneapolis',
'value_after' => 'St. Paul'
},
{
'commit' => undef,
'cost' => 0,
'move' => 'Madison',
'value_before' => 'St. Paul',
'value_after' => 'Madison'
},
{
'commit' => undef,
'cost' => 0,
'move' => 'Rockford',
'value_before' => 'Madison',
'value_after' => 'Rockford'
},
{
'commit' => undef,
'cost' => 0,
'move' => 'Chicago',
'value_before' => 'Madison',
'value_after' => 'Chicago'
},
{
'commit' => undef,
'cost' => 0,
'move' => 'Bloomington',
'value_before' => 'Rockford',
'value_after' => 'Bloomington'
},
{
'commit' => undef,
'cost' => 0,
'move' => 'Urbana',
'value_before' => 'Chicago',
'value_after' => 'Urbana'
}
],
'bfs max depth search trace');
$travel_search->search({search_this => $driver,
search_type => 'bfs',
solutions_to_find => 0,
do_not_repeat_values => 1
});
#print "dnr \n";
$full_path = '';
if ($travel_search->solution_found) { #should be true, path to Urbana
#print "found path from Minneapolis to Urbana\n";
# print join("..", @{$travel_search->path})."\n";
my $path_count = 0;
foreach my $path ($travel_search->paths) {
# print "Path ".$path_count++." ";
# print join("..", @{$path})."\n";
$full_path .= join("..", @{$path})."\n";
}
}
is ($full_path,
"St. Paul..Madison..Chicago..Urbana
", 'bfs not repeat values');
$driver->move('Duluth'); #start out in Duluth
$travel_search->search({search_this => $driver,
solutions_to_find => 0,
search_type => 'bfs',
});
$full_path = '';
if ($travel_search->solution_found) { #should be false, no path to Urbana
$full_path = 'x';
#print "found path from Duluth to Urbana\n";
}
is ($full_path, '', 'bfs duluth');
$driver->move('Minneapolis'); #start out in Minneapolis
$driver->set_destination('Dallas');
$travel_search->search({search_this => $driver,
solutions_to_find => 0,
search_type => 'bfs',
});
$full_path = '';
if ($travel_search->solution_found) { #should be false, path to Dallas
$full_path = 'x';
#print STDERR "found path from Minneapolis to Dallas\n";
}
is ($full_path, '', 'bfs to dallas');
#print "sc6\n";
( run in 0.876 second using v1.01-cache-2.11-cpan-9581c071862 )