プログラミングのお題スレ Part22 (858レス)
プログラミングのお題スレ Part22 http://mevius.5ch.net/test/read.cgi/tech/1691038333/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
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
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
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.034s