看板 Perl 關於我們 聯絡資訊
※ 引述《reizarc (零式札克)》之銘言: : my @a = ( "abc 1 6 3 1 5 6", # data input : "def 2 5 5 1 8 3", : "ghi 4 7 2 0 8 9", : "jkl 4 5 5 1 8 2", : "mno 2 7 5 1 8 9", : "pqr 1 6 5 1 8 3" ); : @a = map{ $_->[ 0 ] } # 轉回 : sort{ $a->[ 4 ] <=> $b->[ 4 ] or # 排序 : $a->[ 2 ] <=> $b->[ 2 ] or : $a->[ 3 ] <=> $b->[ 3 ] } : map{ [ $_, split ] } @a; # 轉換 因為有高手建議更佳的 GRT 轉換解法 看了一下之後發現也非常有趣 我把同樣的問題的解法寫在下面 讓自己練習也希望對大家有玩排序時有幫助 :p my @a = ( "abc 1 6 3 1 5 6", # data "def 2 5 5 1 8 3", "ghi 4 7 2 0 8 9", "jkl 4 5 5 1 8 2", "mno 2 7 5 1 8 9", "pqr 1 6 5 1 8 3" ); @a = @a[ map{ unpack "N", substr( $_, -4 ) } # 轉回來 sort map{ pack( "NNNN", # 轉換成字串 ( split " ", $a[ $_ ] )[ 3, 1, 2 ], $_ ) } ( 0 .. $#a ) ]; 像這樣把全部的問題都轉換成最有效率的 ascii 排序 應該是 GRT 作法的重點所在 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.216.170.17 ※ 編輯: reizarc 來自: 61.216.170.17 (10/24 01:26)