1 2 3
$entfernung{"Jwd"}{"Hauptstadt"}=3745; $entfernung{"Einsame Insel"}{"Jwd"}=50001; $entfernung{"Musterstadt"}{"Kleines Kaff"}=1226;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
my %ent; my %seen; foreach my $ort_von (sort keys %entfernung) { foreach my $ort_nach (sort keys %entfernung) { next if($ort_von eq $ort_nach); #Entfernung zu sich selbst zu errechnen ist sinnlos next if($seen{"$ort_von$ort_nach"}); #diese Entfernung wurde bereits berechnet $seen{"$ort_von$ort_nach"}=1; #Entfernung A->B $seen{"$ort_nach$ort_von"}=1; #Entfernung B->A $ent{$entfernung{$ort_von}{$ort_nach}}={"von"=>$ort_von, "nach"=>$ort_nach}; } } foreach my $distance (sort { $a <=> $b } keys %ent) { say "Entfernung von: " .$ent{$distance}{"von"}." - nach: ".$ent{$distance}{"nach"}." - " . $distance; }
1
2
3
4
"Musterstadt" => "Kleines Kaff" = 1226
"Jwd" => "Haupstadt" = 3745
"Musterstadt" => "Hauptstadt" = 4345
"Jwd" => "Kleines Kaff" = 5678
1
2
3
4
"Musterstadt" => "Kleines Kaff" = 1226
"Musterstadt" => "Hauptstadt" = 4345
"Jwd" => "Haupstadt" = 3745
"Jwd" => "Kleines Kaff" = 5678
1 2 3 4 5 6 7 8 9
my @list; # Komibantionen ['start','ziel'] foreach my $start (keys %entfernung) { foreach my $ziel (keys %{$entfernung{$start}}) { push @list, [$start,$ziel]; } } my @sorted_list = sort {$entfernung{$a->[0]}{$a->[1]} <=> $entfernung{$b->[0]}{$b->[1]}} @list; printf "Von %s nach %s: %d\n", @$_, $entfernung{$_->[0]}{$_->[1]} foreach @sorted_list;
1 2 3 4 5 6 7 8 9
my @list; # Komibantionen ['start','ziel'] foreach my $start (keys %entfernung) { foreach my $ziel (keys %{$entfernung{$start}}) { push @list, [$start,$ziel,$entfernung{$start}{$ziel}]; } } my @sorted_list = sort { $a->[2] <=> $b->[2] } @list; printf "Von %s nach %s: %d\n", @$_ foreach @sorted_list;
1 2 3 4 5 6 7
my @list = map { my $start = $_; map { [$start, $_, $entfernung{$start}{$_}] } keys %{$entfernung{$start}}; } keys %entfernung; my @sorted_list = sort { $a->[2] <=> $b->[2] } @list; printf "Von %s nach %s: %d\n", @$_ foreach @sorted_list;