Thread HoH sortiert ausgeben
(5 answers)
Opened by roli at 2018-06-14 13:21
Eine Alternative ist, die [$start,$ziel]-Elemente gleich um die passende Entfernung anzureichern. Dann werden die Vergleichsroutine und die Weiterverarbeitung einfacher:
Code (perl): (dl
)
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; Für das Umbauen von Datenstrukturen bin ich großer Fan von map. Im Fall geschachtelter Hashes finde ich aber die Lösung von clms leichter lesbar als die Schachtelmap: Code (perl): (dl
)
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; |