プログラミングのお題スレ Part22 (858レス)
プログラミングのお題スレ Part22 http://mevius.5ch.net/test/read.cgi/tech/1691038333/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
207: デフォルトの名無しさん [sage] 2024/02/02(金) 10:50:23.49 ID:fEMhv+T7 >>206 Rust fn foo<'a, 'b>(input: &'b [&'a str]) -> Vec<Vec<&'a str>> { struct Data<'a> { name: &'a str, rep: usize, coll: Option<Vec<usize>>, } let mut data = Vec::<Data>::new(); let mut map = HashMap::<&str, usize>::new(); for s in input { let (index0, index1) = s.splitn(2, '=') .map(|s| match map.get(s) { Some(&index) => data[index].rep, None => { let index = data.len(); map.insert(s, index); data.push(Data { name: s, rep: index, coll: Some(vec![index]), }); index }, }) .sorted().tuple_windows().next().unwrap(); if index0 != index1 { let coll0 = data[index0].coll.take().unwrap(); let coll1 = data[index1].coll.take().unwrap(); coll1.iter().for_each(|&index| data[index].rep = index0); data[index0].coll = Some(itertools::merge(coll0, coll1).collect()); } } data.iter().map(|data| &data.coll).flatten() .map(|coll| coll.iter().map(|&index| data[index].name).collect()).collect() } http://mevius.5ch.net/test/read.cgi/tech/1691038333/207
208: デフォルトの名無しさん [sage] 2024/02/02(金) 10:53:02.58 ID:fEMhv+T7 >>207の動作確認用追加分 use std::collections::HashMap; use itertools::Itertools; fn main() { let input = [ "a1=a2", "b1=b2", "b3=b2", "c1=c2", "e1=e2", "a3=a4", "c3=c4", "e1=e3", "a2=a4", "c3=c1", "b3=a4", "c2=d1", "a4=a5", "d2=c1", "b4=b3", "d3=c3" ]; let output = [ vec!["a1", "a2", "b1", "b2", "b3", "a3", "a4", "a5", "b4"], vec!["c1", "c2", "c3", "c4", "d1", "d2", "d3"], vec!["e1", "e2", "e3"] ]; assert_eq!(foo(&input), output); } http://mevius.5ch.net/test/read.cgi/tech/1691038333/208
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.061s