Whenever I hear Backtracking in the context of Perl, I think Regular Expressions. So, if you can express the problem as a string, and a matching solution as a regular expression, Perl can solve the problem:
use strict; my $change = 16; my @coins = reverse sort qw(2 5); my $q='1'x$change; my $solution = join'',map{qr(((?:.{$_})+))} @coins; $q = ~/^()$solution$/ or die "Error in regex construction"; { # This should maybe be done via @-, but I'm lazy: no strict; print(length(${$_})/$_, '*', $_) for (1..4) };
The key to using Perl effectively is to use its strengths rather than its weaknesses.
Update: Roy Johnson pointed out that I erroneously changed names between testing out and posting - $sol was left over in one place.
In reply to Re: pathsearch/backtracking in Perl - how to solve a problem apparently requiring it? (comparison of Perl with Standard ML)
by Corion
in thread pathsearch/backtracking in Perl - how to solve a problem apparently requiring it? (comparison of Perl with Standard ML)
by metaperl
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |