プログラミングのお題スレ Part22 (854レス)
プログラミングのお題スレ Part22 http://mevius.5ch.net/test/read.cgi/tech/1691038333/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
771: デフォルトの名無しさん [sage] 2025/07/25(金) 12:30:11.02 ID:CjDQVF2B 【問題】 整数のリストが与えられたとき、そのリストを昇順に安定ソートした時の各要素のインデクス(0開始)を対応させたリストを作成せよ 【例】 入力: 1 100 10 10000 1000 出力: 0 2 1 4 3 入力: 3 1 4 1 5 9 2 出力: 3 0 4 1 5 6 2 入力: 0 1 0 1 0 1 0 1 出力: 0 4 1 5 2 6 3 7 実際に必要になって実装したけどスマートな方法があったら知りたい http://mevius.5ch.net/test/read.cgi/tech/1691038333/771
772: デフォルトの名無しさん [sage] 2025/07/25(金) 20:46:23.28 ID:dyl0C+2U >>771 例がおかしい わかりやすい最後の例で示すと 入力: 0 1 0 1 0 1 0 1 出力: 0 4 1 5 2 6 3 7 間違い 出力: 0 2 4 6 1 3 5 7 正解 安定ソートなので同値は順序を保ってこうなる http://mevius.5ch.net/test/read.cgi/tech/1691038333/772
773: デフォルトの名無しさん [sage] 2025/07/25(金) 21:30:28.86 ID:Z69qH9vG >>771 C++ 特にひねりは無い https://ideone.com/mTHn46 http://mevius.5ch.net/test/read.cgi/tech/1691038333/773
775: デフォルトの名無しさん [] 2025/07/26(土) 15:08:13.56 ID:T78ZrTu7 >>771 SQL select row_number() over(order by arrayValue, arrayIndex) - 1 from arrayTable order by arrayIndex http://mevius.5ch.net/test/read.cgi/tech/1691038333/775
776: デフォルトの名無しさん [] 2025/07/26(土) 19:25:22.74 ID:T78ZrTu7 >>771 Java 24 https://text.is/4Z27R http://mevius.5ch.net/test/read.cgi/tech/1691038333/776
777: デフォルトの名無しさん [sage] 2025/07/27(日) 10:09:36.80 ID:vFJ24xnO >>771 ocaml https://ideone.com/E7eFPC >>771 octave https://ideone.com/KkHu9S >>771 ruby https://ideone.com/pPIxcE http://mevius.5ch.net/test/read.cgi/tech/1691038333/777
778: デフォルトの名無しさん [sage] 2025/07/27(日) 17:05:48.29 ID:vFJ24xnO >>771 c https://ideone.com/6Wn3eD http://mevius.5ch.net/test/read.cgi/tech/1691038333/778
779: デフォルトの名無しさん [sage] 2025/07/27(日) 17:08:58.25 ID:vFJ24xnO >>771 ruby 2.6以降? sorti = ->a {a.map.with_index.sort.map &:last} f = sorti << sorti g = method(:p) << f http://mevius.5ch.net/test/read.cgi/tech/1691038333/779
780: デフォルトの名無しさん [] 2025/07/27(日) 20:19:17.79 ID:uFbo+/2v >>771 R https://ideone.com/ctaQC5 統計用言語だけあってライブラリ関数rankを呼び出すだけ。ties.method = "min"を指定すれば 同値を同順位(例えば2番目の例では出力が3 0 4 0 5 6 2となる)にもできる。 http://mevius.5ch.net/test/read.cgi/tech/1691038333/780
781: デフォルトの名無しさん [sage] 2025/07/27(日) 21:43:59.43 ID:w39E9j9Q >>771 Rust 既に色々と出ているため別の観点からのコード 一時作業メモリ最小 & ソートは1回 & ジェネリック fn f<T: std::cmp::Ord>(input: &[T]) -> Vec<usize> { let len = input.len(); // ポジションのリスト [0, 1, 2, 3, ... , len-1] を作成 let mut pos_list: Vec<usize> = (0..len).collect(); // inputを利用してそのポジションだけをソート pos_list.sort_by_key(|&pos| &input[pos]); // 返すべきランクのリスト let mut rank_list: Vec<usize> = vec![0; len]; // ポジション⇔ランクは逆写像なのでソートは不要 (0..len).for_each(|rank| rank_list[pos_list[rank]] = rank); rank_list } fn main() { assert_eq!(f(&[1, 100, 10, 10000, 1000]), [0, 2, 1, 4, 3]); assert_eq!(f(&[3, 1, 4, 1, 5, 9, 2]), [3, 0, 4, 1, 5, 6, 2]); assert_eq!(f(&[0, 1, 0, 1, 0, 1, 0, 1]), [0, 4, 1, 5, 2, 6, 3, 7]); } http://mevius.5ch.net/test/read.cgi/tech/1691038333/781
782: 777 [sage] 2025/07/27(日) 22:54:22.66 ID:YfUjoiLt >>771 octave ソート一回 https://ideone.com/dTRKBs >>771 ruby 2.5 ソート一回 https://ideone.com/akDhpS http://mevius.5ch.net/test/read.cgi/tech/1691038333/782
783: 警備員[Lv.11] [] 2025/07/28(月) 23:30:37.16 ID:uO5vEij8 >>771 >>776をKotlinに変換してKotlinらしくなるように色々省略しただけのもの。 やはり最初からラムダとか考慮されている言語だと色々省略できて分り易くなるね。 https://paiza.io/projects/0Dhknk4mUHrMqtuwzCDAxQ http://mevius.5ch.net/test/read.cgi/tech/1691038333/783
784: デフォルトの名無しさん [sage] 2025/07/29(火) 00:12:31.56 ID:9AXsNEm+ >>771 Rust https://ideone.com/jYX2ws バイナリヒープ使うとソート過程で直接リスト作れるけどコード量増えるしヒープソート遅いから実用性は微妙か C言語ならありかもしれない http://mevius.5ch.net/test/read.cgi/tech/1691038333/784
785: デフォルトの名無しさん [sage] 2025/07/30(水) 21:50:10.50 ID:Ug40aZKP >>771 java https://ideone.com/Z8Q9Dk http://mevius.5ch.net/test/read.cgi/tech/1691038333/785
788: 785 [sage] 2025/07/31(木) 21:15:09.63 ID:R3hgrYP8 >>771 java compose乱用 https://ideone.com/TBTZgj http://mevius.5ch.net/test/read.cgi/tech/1691038333/788
789: デフォルトの名無しさん [sage] 2025/08/03(日) 22:00:37.87 ID:1jv9m6G7 >>771 java >>786を修正。javaが古いねぇ。 https://ideone.com/Z3jS0P http://mevius.5ch.net/test/read.cgi/tech/1691038333/789
790: デフォルトの名無しさん [sage] 2025/08/04(月) 22:42:57.64 ID:A9zbJQ8U >>771 java >>789を修正。何度もすいませんね。classをメソッド内に移動。 https://ideone.com/BV5FXe http://mevius.5ch.net/test/read.cgi/tech/1691038333/790
791: デフォルトの名無しさん [sage] 2025/08/04(月) 23:09:28.79 ID:A9zbJQ8U >>771 java >>790修正。classだったらメソッドの引数がみえるので修正。recordではできない。 https://ideone.com/r6T4Zf http://mevius.5ch.net/test/read.cgi/tech/1691038333/791
793: デフォルトの名無しさん [] 2025/08/06(水) 17:17:53.29 ID:qE4NV2ND >>771 JavaScript https://paiza.io/projects/xtvAB2LXpLg0XOjzBHfl2w http://mevius.5ch.net/test/read.cgi/tech/1691038333/793
795: デフォルトの名無しさん [sage] 2025/08/10(日) 23:18:32.78 ID:FODtZCg5 >>771 scala https://ideone.com/iycaKk >>771 swift https://ideone.com/de2iOi http://mevius.5ch.net/test/read.cgi/tech/1691038333/795
796: デフォルトの名無しさん [sage] 2025/08/11(月) 20:38:34.09 ID:frWpQyFA >>771 dart 2.3 https://ideone.com/XLI2nC ・拡張メソッドはDart2.7から ・ideone現状はDart (dart 2.3.0) http://mevius.5ch.net/test/read.cgi/tech/1691038333/796
797: デフォルトの名無しさん [] 2025/08/12(火) 21:05:08.06 ID:uRUBTkGF >>771 PowerShell 6以降 function rank($a) { $n = $a.length $r = [int[]]::new($n) if ($n) {0..($n - 1) | sort-object -stable {$a[$_]} |% {$i = 0} {$r[$_] = $i++}} $r } function PrintArray($a) { if ($a.length -le 1) {return $a} "[$(($a |% {PrintArray $_}) -join ", ")]" } $q = (1, 100, 10, 10000, 1000), (3, 1, 4, 1, 5, 9, 2), (0, 1, 0, 1, 0, 1, 0, 1), @(), 1, ((1, 1), (1, 1), (1, 0, 1), (1, 0)) $q |% { "入力: $(PrintArray $_)" "出力: $(PrintArray (rank $_))" "" } http://mevius.5ch.net/test/read.cgi/tech/1691038333/797
810: デフォルトの名無しさん [sage] 2025/08/19(火) 21:28:38.04 ID:ahVErwF8 >>771 scheme (chicken 4.13) https://ideone.com/RREeGy http://mevius.5ch.net/test/read.cgi/tech/1691038333/810
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.038s