in reply to Items in Order
use Data::Dumper; use strict; use warnings; sub move { my ($parn, $chld, $result, $index, $ordr, $chain, $len) = @_; if ($index > $#{$chld}) { $result->{$chain} = $len; return; } else { move($parn, $chld, $result, $index + 1, $parn->{$chld->[$index]} +, "$chain,$chld->[$index]", $len + 1) if ($parn->{$chld->[$index]} > +$ordr); move($parn, $chld, $result, $index + 1, $ordr, $chain, $len); } } my $a = [1,2,3,8,4,5,6]; my $index = 0; my %a = map {$_=>$index ++} @{$a}; my $b = [2,1,4,3,5]; my $result = {}; move(\%a, $b, $result, 0, -1, "", 0); print Dumper($result);
|
|---|