プログラミングのお題スレ Part22 (859レス)
プログラミングのお題スレ Part22 http://mevius.5ch.net/test/read.cgi/tech/1691038333/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
485: デフォルトの名無しさん [] 2025/01/22(水) 21:35:12.82 ID:JtEnwxKE お題 文字列と長さを入力として受け取り デカルト積のリストを出力してください 入力:ABC 1 出力:[A, B, C] 入力:ABC 2 出力:[AA, AB, AC, BA, BB, BC, CA, CB, CC] 入力:ABC 3 出力:[AAA, AAB, AAC, ABA, ABB, ABC, ACA, ACB, ACC, BAA, BAB, BAC, BBA, BBB, BBC, BCA, BCB, BCC, CAA, CAB, CAC, CBA, CBB, CBC, CCA, CCB, CCC] http://mevius.5ch.net/test/read.cgi/tech/1691038333/485
486: デフォルトの名無しさん [sage] 2025/01/22(水) 22:43:43.59 ID:EHGf/TPZ >>485 Rust fn odai(文字列: &str, 長さ: usize) -> Vec<String> { use itertools::Itertools; (0..長さ) .map(|_| 文字列.chars()) .multi_cartesian_product() .map(String::from_iter) .collect() } fn main() { assert_eq!(odai("ABC", 1), ["A", "B", "C"]); assert_eq!(odai("ABC", 2), ["AA", "AB", "AC", "BA", "BB", "BC", "CA", "CB", "CC"]); assert_eq!(odai("ABC", 3), ["AAA", "AAB", "AAC", "ABA", "ABB", "ABC", "ACA", "ACB", "ACC", "BAA", "BAB", "BAC", "BBA", "BBB", "BBC", "BCA", "BCB", "BCC", "CAA", "CAB", "CAC", "CBA", "CBB", "CBC", "CCA", "CCB", "CCC"]); } http://mevius.5ch.net/test/read.cgi/tech/1691038333/486
487: デフォルトの名無しさん [sage] 2025/01/22(水) 23:18:53.24 ID:dYX3B7ea >>485 ruby https://ideone.com/EA8orq f = ->(s, n) {:product.to_proc.(*[s.chars]*n).map(&:join)} http://mevius.5ch.net/test/read.cgi/tech/1691038333/487
488: デフォルトの名無しさん [sage] 2025/01/22(水) 23:57:13.34 ID:EHGf/TPZ >>485 Rust 今回は積ライブラリを使わない自力版 fn odai(文字列: &str, 長さ: usize) -> Vec<String> { let chars = 文字列.chars().collect::<Vec<_>>(); let mut state = vec![0; 長さ]; let mut output = Vec::new(); 'Loop: loop { let s = state.iter().map(|i| chars[*i]).collect(); output.push(s); for index in state.iter_mut().rev() { *index += 1; if *index == chars.len() { *index = 0; continue; } continue 'Loop; } return output; } } 検証用main()は>>486と同じ http://mevius.5ch.net/test/read.cgi/tech/1691038333/488
489: デフォルトの名無しさん [] 2025/01/23(木) 18:33:06.01 ID:hcg9tgUx >>485 JavaScript const prod = function* (str, len, buf = []) { if (len > 0) { for (let i = 0; i < str.length; i++) { buf.push(str[i]); yield* prod(str, len - 1, buf); buf.pop(); } } else { yield buf.join(""); } }; for (let n = 1; n < 4; n++) { console.log([...prod("ABC", n)]); } http://mevius.5ch.net/test/read.cgi/tech/1691038333/489
490: デフォルトの名無しさん [sage] 2025/01/23(木) 20:05:23.84 ID:naue5Hlh >>485 ocaml https://ideone.com/hEQ0UI >>485 octave https://ideone.com/Hga7TO http://mevius.5ch.net/test/read.cgi/tech/1691038333/490
491: 9 [sage] 2025/01/24(金) 01:44:22.46 ID:p08ruAfw >>485 Perl5 for $n (1..3) { @cp = @s = qw(A B C); while(--$n) { @cp = map{ $p = $_; map{ "$p$_" } @s } @cp } print "@cp\n"; } ※見易くするためインデントは全角スペースに置換してあります 実行結果 ~ $ perl 22_485_CartesianProd.pl A B C AA AB AC BA BB BC CA CB CC AAA AAB AAC ABA ABB ABC ACA ACB ACC BAA BAB BAC BBA BBB BBC BCA BCB BCC CAA CAB CAC CBA CBB CBC CCA CCB CCC http://mevius.5ch.net/test/read.cgi/tech/1691038333/491
493: デフォルトの名無しさん [sage] 2025/01/24(金) 20:04:46.59 ID:kDOvSp0D >>485 dart https://ideone.com/nZXS5G >>485 rust https://ideone.com/07rym1 http://mevius.5ch.net/test/read.cgi/tech/1691038333/493
496: デフォルトの名無しさん [sage] 2025/01/25(土) 21:23:47.57 ID:KM9w0vp0 >>485 c https://ideone.com/7DAmou ・バッファに取る版 >>485 c https://ideone.com/irBE3p ・バッファに取らない版 ・表示するだけ http://mevius.5ch.net/test/read.cgi/tech/1691038333/496
497: デフォルトの名無しさん [] 2025/01/26(日) 14:07:38.91 ID:nBBaggrk >>485 Java https://paiza.io/projects/W5rymKHMXkZgp2ID0-tfMg http://mevius.5ch.net/test/read.cgi/tech/1691038333/497
498: 493 [sage] 2025/01/26(日) 15:22:46.05 ID:dl7YvN1C >>485 dart https://ideone.com/WtkLVE ・若干の簡略化 >>485 rust https://ideone.com/VXyvY2 ・若干の簡略化? http://mevius.5ch.net/test/read.cgi/tech/1691038333/498
499: デフォルトの名無しさん [sage] 2025/01/27(月) 00:00:51.14 ID:/Jqezixy >>485 java https://ideone.com/H7Pti7 http://mevius.5ch.net/test/read.cgi/tech/1691038333/499
505: デフォルトの名無しさん [sage] 2025/01/27(月) 21:30:57.80 ID:l9HsQRRu >>485 lisp https://ideone.com/Hiqt3o >>500 lisp https://ideone.com/eRqGSp http://mevius.5ch.net/test/read.cgi/tech/1691038333/505
550: 警備員[Lv.19] [] 2025/02/09(日) 03:18:28.07 ID:Y8d2noVo >>485 Kotlin https://paiza.io/projects/RtyGxT2PXZScHW6eucI5ng http://mevius.5ch.net/test/read.cgi/tech/1691038333/550
553: デフォルトの名無しさん [] 2025/02/09(日) 21:29:55.65 ID:do9MXosP >>485 R https://ideone.com/wuW5oV http://mevius.5ch.net/test/read.cgi/tech/1691038333/553
557: デフォルトの名無しさん [] 2025/02/10(月) 21:24:31.20 ID:KgR1Tipz >>485 C# (IEnumerableとして列挙) https://ideone.com/UBY8bl http://mevius.5ch.net/test/read.cgi/tech/1691038333/557
835: デフォルトの名無しさん [sage] 2025/09/08(月) 23:02:49.14 ID:4SI/cFAg >>485 scheme (chicken 4.13) https://ideone.com/feYtNB >>500 scheme (chicken 4.13) https://ideone.com/Svhv1y http://mevius.5ch.net/test/read.cgi/tech/1691038333/835
836: 835 [sage] 2025/09/08(月) 23:33:25.73 ID:4SI/cFAg >>485 scheme (chicken 4.13) https://ideone.com/ejvKat ・(product . lists) ・(product xs . rest) が >>835 http://mevius.5ch.net/test/read.cgi/tech/1691038333/836
839: 836 [sage] 2025/09/10(水) 22:49:33.81 ID:NV1RL9MH >>485 scheme (chicken 4.13) https://ideone.com/g8wtFG ・デカルト積の解釈を(勝手に)変更 http://mevius.5ch.net/test/read.cgi/tech/1691038333/839
840: 839 [sage] 2025/09/10(水) 23:35:38.95 ID:6JfM8ZLf >>485 scheme (chicken 4.13) https://ideone.com/A6K3XL ・(cons y x)して最後にreverseする ・(list x y)して最後にflattenするのが >>839 http://mevius.5ch.net/test/read.cgi/tech/1691038333/840
841: 840 [sage] 2025/09/11(木) 23:05:23.09 ID:WPUXbxYH >>485 scheme (chicken 4.13) https://ideone.com/YqrvdM ・reverse回数減らした版 http://mevius.5ch.net/test/read.cgi/tech/1691038333/841
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.039s