作者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
推 adu:再次受到g大指導了m(__ __)m 原來reverse可以辦到! 05/26 13:41
→ giacch:不用客氣 ~ 寫程式很好玩 05/26 18:38