Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number

Re: HoH problem

by imp (Priest)
on Nov 07, 2006 at 22:21 UTC ( #582744=note: print w/ replies, xml ) Need Help??

in reply to HoH problem

In the spirit of TMTOWTDI here's an alternative solution that uses Sort::Key to improve readability.

To further improve the readability (without too much memory being wasted) this version also creates a partially flattened collection of [filename, letter, dataref] chunks. <p. It could be simplified further, but I kept the letter key capturing enabled in case it was neccesary for solving the problem with actual data (versus the example data).

#!/usr/bin/perl use strict; use warnings; use Sort::Key qw(ikeysort); my %hoh; $hoh{'FILENAME1'}{'A'}{'weight'}=3000; $hoh{'FILENAME1'}{'A'}{'intensity'}=2; $hoh{'FILENAME1'}{'B'}{'weight'}=4000; $hoh{'FILENAME1'}{'B'}{'intensity'}=3; $hoh{'FILENAME2'}{'D'}{'weight'}=2000; $hoh{'FILENAME2'}{'D'}{'intensity'}=7; $hoh{'FILENAME2'}{'C'}{'weight'}=5000; $hoh{'FILENAME2'}{'C'}{'intensity'}=3; $hoh{'FILENAME3'}{'C'}{'weight'}=1000; $hoh{'FILENAME3'}{'C'}{'intensity'}=4; $hoh{'FILENAME3'}{'A'}{'weight'}=6000; $hoh{'FILENAME3'}{'A'}{'intensity'}=3; # Create a list of sets # $set[0] = filename # $set[1] = letter # $set[2] = reference to the data for this filename-letter combination my @sets; for my $filename (keys %hoh) { push @sets, [$filename, $_,$hoh{$filename}{$_}] for keys %{$hoh{$f +ilename}} } for my $set (ikeysort { $_->[2]{weight} } @sets) { my ($filename,$letter,$data) = @$set; my $weight = $data->{weight}; my $intensity = $data->{intensity}; printf "weight: %4d intensity: %d Filename: %s\n",$weight,$intensi +ty,$filename; }

Comment on Re: HoH problem
Select or Download Code

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://582744]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (10)
As of 2015-11-30 23:32 GMT
Find Nodes?
    Voting Booth?

    What would be the most significant thing to happen if a rope (or wire) tied the Earth and the Moon together?

    Results (788 votes), past polls