看板 Perl 關於我們 聯絡資訊
※ 引述《dryman (dryman)》之銘言: : 是一個解排列組合的問題.. : 解完後來看,文章居然不見了XD : 給定一個hash : %h=('a'=>3, 'b'=>4, 'c'=>5,); : 印出他們的排列組合及value相乘值 : ab 12 : ac 15 : bc 20 : 這是我的解法: : @h=%h; : for $idx (0..$#h/2){ : $_ != $idx and : print "$h[$idx*2]$h[$_*2] ", $h[$idx*2+1]*$h[$_*2+1], "\n" : for $idx..$#h/2; : } 我的解法其實只是把 for 抓改成前置式而已,並沒有太大差別啦 for ( keys %h ) { push @myarray,$_; } @myarray = sort @myarray; for $i ( 0..$#myarray ) { for $j ( $i+1..$#myarray ) { ( $myarray[$i] ne $myarray[$j] ) ? print "$myarray[$i]$myarray[$j] is ".$h{"$myarray[$i]"}*$h{"$myarray[$j]"}."\n" : next ; } } 好想念 vim 的 supertab 跟 hl 阿...... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.223.232.78
dryman:真應該建議PTT弄個vi mode...現在連emacs都砍掉不少功能 05/27 21:37
dryman:第一句可以直接簡寫成 @myarray = keys %h; 05/27 21:37
dryman:@myarray = sort keys %h; 05/27 21:38
dryman:如果keys如原題目是str的話,那可能要這樣寫 05/27 21:38
dryman:@myarray = sort {$a cmp $b} keys %h; 05/27 21:39