L~R:
Since you asked in the ChatterBox for a recursive version, I thought I'd take up the challenge. Here's my take on a recursive solution:
#!/usr/bin/perl
use strict;
use warnings;
my %net = (
'1.2.3.3' => ['1.2.3.4'],
'1.2.3.4' => ['1.2.3.3', '1.2.3.5', '1.2.3.7'],
'1.2.3.5' => ['1.2.3.4', '1.2.3.6', '1.2.3.7'],
'1.2.3.6' => ['1.2.3.5', '1.2.3.7'],
'1.2.3.7' => ['1.2.3.6', '1.2.3.4', '1.2.3.5'],
);
my %visited=();
my @stack=();
print find_path('1.2.3.4', '1.2.3.6') || "no solution!";
sub find_path {
my ($beg, $end) = @_;
return $end if $beg eq $end;
$visited{$beg}=1;
for my $try (@{$net{$beg}}) {
if (!defined($visited{$try})) {
push @stack, $beg;
my $t = find_path($try, $end);
return $beg.'=>'.$t if $t;
pop @stack;
}
}
undef;
}
--roboticus
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.