in reply to Re^2: How to code this?
in thread How to code this?
Oh, I missed that! Something like this then:
#!/usr/lib/perl use strict; use warnings; my $kPoolSpan = 2; my %hash = ( 3 => [1 .. 2], 4 => [2 .. 2], 6 => [4 .. 5], 7 => [2 .. 6], 8 => [1 .. 3], 11 => [5 .. 10], ); my @indexes = sort {$a <=> $b} keys %hash; my @pool; while (@indexes) { my $oldPoolSize = @pool; push @pool, shift @indexes if !@pool; push @pool, shift @indexes while @indexes && $pool[0] + $kPoolSpan >= $indexes[0]; my $poolSum; my @new = @pool[$oldPoolSize .. $#pool]; for my $poolEntry (@pool) { $poolSum += $_ for @{$hash{$poolEntry}}; } print "Pool @pool sum (added @new): $poolSum\n"; shift @pool while @indexes && @pool && $pool[0] + $kPoolSpan < $in +dexes[0]; }
Prints:
Pool 3 4 sum (added 3 4): 5 Pool 4 6 sum (added 6): 11 Pool 6 7 8 sum (added 7 8): 35 Pool 11 sum (added 11): 45
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: How to code this? (Solved)
by BrowserUk (Patriarch) on Nov 15, 2011 at 03:40 UTC |