in reply to Selectively iterate through an array

G'day jaiieq,

I appear to have identified more paths than you show (e.g. 0:6 6:12 12:24 is not in your list). Here's the code:

#!/usr/bin/env perl -l use strict; use warnings; my %route_from; my %routes_starting_at; my @paths = qw{0:6 0:12 0:18 0:24 6:12 6:18 6:24 12:18 12:24 18:24}; map { push @{$route_from{$_->[0]}}, $_->[1] } map { [ split /:/ ] } @p +aths; for my $s (sort { $b <=> $a } keys %route_from) { for my $e (sort { $a <=> $b } @{$route_from{$s}}) { my $path = "$s:$e"; if (exists $routes_starting_at{$e}) { for my $r (@{$routes_starting_at{$e}}) { my $ext_path = join ' ' => $path, $r; push @{$routes_starting_at{$s}}, $ext_path; } } else { push @{$routes_starting_at{$s}}, $path; } } } for my $k (sort { $a <=> $b } keys %routes_starting_at) { print for @{$routes_starting_at{$k}}; }

Output:

$ pm_start_end_graph.pl 0:6 6:12 12:18 18:24 0:6 6:12 12:24 0:6 6:18 18:24 0:6 6:24 0:12 12:18 18:24 0:12 12:24 0:18 18:24 0:24 6:12 12:18 18:24 6:12 12:24 6:18 18:24 6:24 12:18 18:24 12:24 18:24

-- Ken