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
In reply to Re^3: How to code this?
by GrandFather
in thread How to code this?
by BrowserUk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |