作者giacch (小a)
看板Perl
标题Re: [问题] 将hash key相对称的value相加
时间Tue May 25 19:54:00 2010
※ 引述《adu (^_^)》之铭言:
: 请问版大们
: 现在我有一个hash长这个样子
: LM: 0.166666666666667
: MM: 0.333333333333333
: LL: 0.333333333333333
: ML: 0.166666666666667
: 如果要if(key==reverse key){则value相加}该怎麽做?
: 这个例子当中就是因为LM==reverse ML
: 所以结果会变成
: MM: 0.333333333333333
: LL: 0.333333333333333
: ML: 0.333333333333333 (ML或是LM都不拘)
: 谢谢版大
#!/usr/bin/perl
$DATA{(/^(.+?):/)[0]}=(/:\s*(.+?)$/)[0] for(<DATA>);
print "\n======= DATA =======\n";
print "$_ $DATA{$_}\n" for(keys %DATA);
foreach $p (keys %DATA) {
$q=reverse $p;
if($p ne $q and defined $DATA{$q}) {
$DATA{$p}=$DATA{$p}+$DATA{$q};
delete $DATA{$q};
}
}
print "\n====== RESULT ======\n";
print "$_ $DATA{$_}\n" for(keys %DATA);
__DATA__
LM: 0.166666666666667
MM: 0.333333333333333
LL: 0.333333333333333
ML: 0.166666666666667
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.192.170.66
1F:推 adu:再次受到g大指导了m(__ __)m 原来reverse可以办到! 05/26 13:41
2F:→ giacch:不用客气 ~ 写程式很好玩 05/26 18:38