Re: [閒聊] 剛剛有一篇文章..

看板Perl作者 (一卡那亞)時間15年前 (2010/05/27 20:47), 編輯推噓1(104)
留言5則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《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

05/27 21:37, , 1F
真應該建議PTT弄個vi mode...現在連emacs都砍掉不少功能
05/27 21:37, 1F

05/27 21:37, , 2F
第一句可以直接簡寫成 @myarray = keys %h;
05/27 21:37, 2F

05/27 21:38, , 3F
@myarray = sort keys %h;
05/27 21:38, 3F

05/27 21:38, , 4F
如果keys如原題目是str的話,那可能要這樣寫
05/27 21:38, 4F

05/27 21:39, , 5F
@myarray = sort {$a cmp $b} keys %h;
05/27 21:39, 5F
文章代碼(AID): #1B_cdBzd (Perl)
討論串 (同標題文章)
文章代碼(AID): #1B_cdBzd (Perl)