[過去ログ]
Perlについての質問箱 64箱目 (1002レス)
Perlについての質問箱 64箱目 http://mevius.5ch.net/test/read.cgi/tech/1548981877/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
842: デフォルトの名無しさん [sage] 2020/12/09(水) 11:29:48.25 ID:LWKBPFtb >>841 ソートの内部処理が想像できんのか? もとの並び方にはよるが、ふつうは大きく異なる。 「処理系」とやらが気を利かせられる範疇ではない。 比較処理にsayでもいれて試してみろっつーんだよ。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/842
843: デフォルトの名無しさん [sage] 2020/12/09(水) 12:58:19.84 ID:UMU4oc+t 内部の話だからsayでは判らんだろ 関数で評価しないといけないと判っていて、動的に処理する必要も無いんだから、 評価済みのテーブルを内部に持たせようというのは自然な発想 http://mevius.5ch.net/test/read.cgi/tech/1548981877/843
844: デフォルトの名無しさん [sage] 2020/12/09(水) 13:12:15.55 ID:/81rDyGm >>843 試してから言え。 きっと、想像以上の出力が出てきて驚くから。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/844
845: デフォルトの名無しさん [sage] 2020/12/09(水) 13:44:43.94 ID:UMU4oc+t 判ってないのかな 処理速度に配慮した処理系があっても不思議ではないという話 手元で試して遅かったとしても、全ての処理系に対する証明にはならない http://mevius.5ch.net/test/read.cgi/tech/1548981877/845
846: デフォルトの名無しさん [sage] 2020/12/09(水) 14:16:41.19 ID:AA5LXV3h >>845 痛々しいからもうやめとけ http://mevius.5ch.net/test/read.cgi/tech/1548981877/846
847: デフォルトの名無しさん [sage] 2020/12/09(水) 14:32:22.15 ID:LWKBPFtb >>845 Perlの「全ての処理系」て。w http://mevius.5ch.net/test/read.cgi/tech/1548981877/847
848: デフォルトの名無しさん [sage] 2020/12/09(水) 15:17:55.01 ID:UMU4oc+t そもそも重いかどうかが疑問で、どっちでやっても一瞬で終わるのが普通 それなら読みやすい方が優れている 重くて困ってから対策を考えればいい http://mevius.5ch.net/test/read.cgi/tech/1548981877/848
849: デフォルトの名無しさん [sage] 2020/12/09(水) 16:44:07.55 ID:qaSCdqDS map { $_->[0]; } sort { $a->[1] <=> $b->[1] || $a->[2] <=> $b->[2]; } map { [$_, /(\d+)/g ]; } 読みにくい…かなあ? http://mevius.5ch.net/test/read.cgi/tech/1548981877/849
850: デフォルトの名無しさん [sage] 2020/12/09(水) 17:06:18.35 ID:8NKLSi5o >>849 他の言語の人が見たら発狂しそう http://mevius.5ch.net/test/read.cgi/tech/1548981877/850
851: デフォルトの名無しさん [sage] 2020/12/09(水) 18:15:36.35 ID:UMU4oc+t 別に短く書かなくていいんだよ @r = sort s2 @a; sub s1 { my $str = shift; $str =~ /(\d+)\-(\d+)/; return $1 * 100 + $2; } sub s2 { return s1($a) <=> s1($b); } http://mevius.5ch.net/test/read.cgi/tech/1548981877/851
852: デフォルトの名無しさん [sage] 2020/12/09(水) 18:16:58.18 ID:xAMitlRd 発狂しない人が使えば良いよ http://mevius.5ch.net/test/read.cgi/tech/1548981877/852
853: デフォルトの名無しさん [sage] 2020/12/09(水) 19:43:12.41 ID:LWKBPFtb >>848 おまえ、ハードな処理を実装したことがないやろ?w 慣れたPerl使いはわざわざ>>851みたいなコードは書かない。 遅いし、くどくて逆に読みにくいからな。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/853
854: デフォルトの名無しさん [sage] 2020/12/09(水) 19:45:15.15 ID:LWKBPFtb >>850 C#でも、タプルが使えるようになったので、似たようなコードは書く。 LINQなぶんだけPerlより読みやすいけど。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/854
855: デフォルトの名無しさん [sage] 2020/12/09(水) 22:17:09.12 ID:rsuX7ND7 ハッシュテーブルにs1($val)の戻り値を保存して、そのハッシュテーブルを使って比較関数を呼び出すとかするのが普通でしょ。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/855
856: 849 [sage] 2020/12/10(木) 06:03:00.77 ID:+FxPMgzN 読みやすい優れたコードが >>851 か。 自分のコードを出してくれた点は評価するが $1 * 100 + $2 って何? http://mevius.5ch.net/test/read.cgi/tech/1548981877/856
857: デフォルトの名無しさん [sage] 2020/12/10(木) 16:08:39.86 ID:smJEm1Fb 2桁前提なんだろうな http://mevius.5ch.net/test/read.cgi/tech/1548981877/857
858: デフォルトの名無しさん [sage] 2020/12/10(木) 19:59:40.99 ID:g17Qy/zb >>857 >>834なら4桁までイケる。w http://mevius.5ch.net/test/read.cgi/tech/1548981877/858
859: デフォルトの名無しさん [sage] 2020/12/11(金) 03:24:48.11 ID:lklp228q 考え方は同じだけど最初からソート用の値をデータに持たせてみる。 my %x = ( '3-1' => ['e', 301], '1-2' => ['b', 102], .... , ); sort { $x{$a}[1] <=> $x{$b}[1] } keys %x; http://mevius.5ch.net/test/read.cgi/tech/1548981877/859
860: デフォルトの名無しさん [sage] 2020/12/11(金) 03:42:00.36 ID:Hz2bdcAQ 複数キーでのソートに帰着させるべきなんだろうな 1-1-1 も許容する、とかになった瞬間に破綻する http://mevius.5ch.net/test/read.cgi/tech/1548981877/860
861: デフォルトの名無しさん [sage] 2020/12/11(金) 04:01:52.35 ID:Hz2bdcAQ sub s1 { my @a = split /\-/, $a; my @b = split /\-/, $b; my $dim = @a > @b ? @a : @b; for my $i (0 .. $dim) { my $cmp = $a[$i] <=> $b[$i]; return $cmp if $cmp; } return 0; } http://mevius.5ch.net/test/read.cgi/tech/1548981877/861
862: 856 [sage] 2020/12/11(金) 06:10:31.03 ID:LwDR4/oY >> 833 には数値の値域については何も書かれてないんだから 勝手に想定しない方がいいと想うよ。 どうしても比較を簡略化したいなら pack 関数で数値を全部 ビッグエンディアンで並べればいいんじゃないかな。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/862
863: デフォルトの名無しさん [sage] 2020/12/11(金) 10:41:01.46 ID:vQm1aiEb >>860 最初から想定されてるのでなければ、ひどい仕様変更なんだから、実装変更もやむなしやろ。 数字じゃなくてアルファベットにします、と言われただけでパーやし。w http://mevius.5ch.net/test/read.cgi/tech/1548981877/863
864: デフォルトの名無しさん [sage] 2020/12/11(金) 10:50:54.59 ID:vQm1aiEb >>862 勝手に想定するのもあたりまえ。 じゃないと、なんにも例示できなくなるで? 値域がどうこうなんか、自分でなんとでもすればいいだけ。 本題のソートには関係ない。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/864
865: デフォルトの名無しさん [sage] 2020/12/11(金) 11:20:18.13 ID:Hz2bdcAQ 1-1があるなら1-1-1もあると予測するのは自然な拡張 1-1-1-... に無限に対応できるように作っておいて、 その特殊ケースとして要件を満たす、で十分 アルファベットにも対応するのは次元が違う http://mevius.5ch.net/test/read.cgi/tech/1548981877/865
866: デフォルトの名無しさん [sage] 2020/12/11(金) 19:40:49.33 ID:V1LdBVWq >>864 こういうひとがコーディングすると バッブァオーバーランとか起こしてセキュリティに穴を開けるんだな http://mevius.5ch.net/test/read.cgi/tech/1548981877/866
867: デフォルトの名無しさん [sage] 2020/12/11(金) 20:46:31.45 ID:vQm1aiEb >>866 アホなの? 他人のコードのバッファオーバーランなんか知らんわ。 自分で責任を持て。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/867
868: デフォルトの名無しさん [sage] 2020/12/11(金) 21:01:49.19 ID:jm3zE7RU 普段は過疎ってるのに少し書き込みがあるとクソ雑魚が湧いてきてグズグズ文句たれる 頭の中どうなってんだろうな http://mevius.5ch.net/test/read.cgi/tech/1548981877/868
869: デフォルトの名無しさん [sage] 2020/12/11(金) 22:34:31.89 ID:Hz2bdcAQ んでんでんで http://mevius.5ch.net/test/read.cgi/tech/1548981877/869
870: デフォルトの名無しさん [sage] 2020/12/11(金) 22:41:46.66 ID:pFqzegRi >>837 だが、実は、このコードは、オレが実際に、数字とかアルファベットとかが 複雑に絡んだ文字列を、ある規則に従ってソートするために作ったものを 流用したんだ。だから、応用範囲が広いという点では、これがいいと思うけどな。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/870
871: デフォルトの名無しさん [sage] 2020/12/11(金) 22:48:30.39 ID:Hz2bdcAQ sortの関数って@_で受けれるの? http://mevius.5ch.net/test/read.cgi/tech/1548981877/871
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 131 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.015s