use*_*579 2 perl data-structures
嗨我有一个哈希,其中键是一个3digit代码,值是该代码下的元素数.我想总结3digit代码并乘以元素数量,然后最后添加它们.例:
000 23
012 42
222 34
[(0+0+0)*23]+[(0+1+2)*42]+[(2+2+2)*34]=0+126+204=330
Run Code Online (Sandbox Code Playgroud)
所以我试过
foreach my $key (sort keys %hash ){
@arrSum=split(//, $key);
foreach $i (@arrSum){
$sum+=$i;
$value=$sum*$hash{$key};
}
}
Run Code Online (Sandbox Code Playgroud)
这是行不通的.它实际上必须考虑每一行,而是一次性总结所有3digit代码.需要一些帮助.
bvr*_*bvr 17
下面是更多的功能到这个问题的方法,它也使用sum
从列表::的Util:
use List::Util qw(sum);
my %hash = qw(
000 23
012 42
222 34
);
print sum(map { sum(split //) * $hash{$_} } keys %hash); # 330
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5493 次 |
最近记录: |