[過去ログ]
Perlについての質問箱 64箱目 (1002レス)
Perlについての質問箱 64箱目 http://mevius.5ch.net/test/read.cgi/tech/1548981877/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
874: 532 [sage] 2020/12/12(土) 00:28:14.42 ID:tTwN9OuS >>833 perlのsort()アルゴリズムは5,8以降マージソートになってsort結果は安定なアルゴリズムなので 手短にコードを書くなら右の数字でsortしてから左の数字でsortすれば所望の結果が得られる。以下サンプル実装 use List::Util 'shuffle'; %h = map{$_ => $i++} shuffle qw{1-1 1-2 1-3 2-1 2-2 2-3 3-1 3-2 3-3}; use feature qw{say signatures}; no warnings experimental; @k1 = keys %h; say "@k1"; sub f($s) { [$s =~ /(\d+)/g, $s]}; @k2 = map{$$_[2]} sort{$a->[0] <=> $b->[0]} sort{$a->[1] <=> $b->[1]} map{f $_} @k1; say "@k2"; 実行結果 ~ $ perl 64_833_n-n_sort_1.pl 1-1 2-3 3-3 1-2 3-1 2-2 2-1 1-3 3-2 1-1 1-2 1-3 2-1 2-2 2-3 3-1 3-2 3-3 言語処理系内部のsort()関数のアルゴリズムに依存しない書き方がしたいなら 左と右の数値で二段階のソートをするか、右の数字と左の数値で順位に一貫性のあるキーを作って 一段階のソートで済ませる方法もあると思う。 そういったサンプル実装を見たいのであれば、時間があればくけれども… http://mevius.5ch.net/test/read.cgi/tech/1548981877/874
875: 532 [sage] 2020/12/12(土) 00:42:28.87 ID:tTwN9OuS つか、実は Tie::IxHash を使ってhashに登録したデータの順番を維持して取り出せれば いいだけの話だったりしてな。しらんけど http://mevius.5ch.net/test/read.cgi/tech/1548981877/875
877: 532 [sage] 2020/12/12(土) 00:48:12.17 ID:tTwN9OuS >>849 おっとここに十分な解答があったわw http://mevius.5ch.net/test/read.cgi/tech/1548981877/877
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.033s