看板 Perl 關於我們 聯絡資訊
※ 引述《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