[過去ログ]
Rust part21 (1002レス)
Rust part21 http://mevius.5ch.net/test/read.cgi/tech/1692105879/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
430: デフォルトの名無しさん [sage] 2023/10/07(土) 06:46:44.80 ID:bWLG2vp7 mut無しとはこういうことか https://play.rust-lang.org/?version=stable&mode=release&edition=2021&gist=a5753729862ae878a1cf011314e90f3e fn qsort<T: Copy+Ord>(list: &[T]) -> Vec<T> { match list { [pivot, ..] => { let (smaller, rest): (Vec<T>, Vec<T>) = list[1..].iter().partition(|&i| i < pivot); [qsort(&smaller), vec![*pivot], qsort(&rest)].concat() }, _ => vec![] } } fn main() { let list = [9, 0, 7, 3, 6, 1, 2, 4, 8, 5]; println!("{:?}", list); println!("{:?}", qsort(&list)); } http://mevius.5ch.net/test/read.cgi/tech/1692105879/430
435: デフォルトの名無しさん [sage] 2023/10/07(土) 15:18:57.75 ID:AO4ZOvxF >>424 >>430 なるほど 美しいコードはスッキリうんこみたいに気持ち良い まるで脳が洗われるようだ 普段いかに毒に浸かってるかが判るな http://mevius.5ch.net/test/read.cgi/tech/1692105879/435
439: デフォルトの名無しさん [sage] 2023/10/07(土) 23:59:36.96 ID:QajUcOD9 >>430 RustはそのようにOCamlやScalaと同等に書くことも容易な点がいいな 同時にその方法によりRustで記述すると大量にVec(またはリストを実現する何か)を使い捨てていることが見える つまりGC言語ではガベージが大量に出る http://mevius.5ch.net/test/read.cgi/tech/1692105879/439
442: デフォルトの名無しさん [sage] 2023/10/08(日) 09:57:45.64 ID:ShBUnVvx 同等というより>>438と>>430は全く同じだな 空でなければpartitionでsmallerとrestに分けて それぞれを再帰でqsortしてconcatenate http://mevius.5ch.net/test/read.cgi/tech/1692105879/442
474: デフォルトの名無しさん [sage] 2023/10/11(水) 23:18:11.74 ID:vJm7EO/F >>441 >>430がVec使用だから同等でないという話ならばRustにもリンクリストがあるよ リンクリストに特化したパターンマッチング構文や結合構文はないけれど 例えばTをCopyせずそのまま使うならば use std::collections::LinkedList; fn qsort<T: PartialOrd>(mut list: LinkedList<T>) -> LinkedList<T> { if let Some(pivot) = list.pop_front() { let (smaller, rest): (LinkedList<T>, LinkedList<T>) = list.into_iter().partition(|x| x < &pivot); // concat list = qsort(smaller); list.extend([pivot]); list.extend(qsort(rest)); } list } fn main() { let list = LinkedList::from([9, 0, 7, 3, 6, 1, 2, 4, 8, 5]); println!("{:?}", list); println!("{:?}", qsort(list)); } http://mevius.5ch.net/test/read.cgi/tech/1692105879/474
478: デフォルトの名無しさん [sage] 2023/10/12(木) 12:51:53.05 ID:5Y8Kw2UP >>477 そんな表層的なことを問題にするのは愚か 例えばmutを表層的に使っていない>>430はそこで呼び出しているpartitionとconcatそれぞれのなかでmutを使っている 当たり前だがデータを組み立てたり書き換える処理は全てmutにたどりつく >>474でも表層的にmutを無くしたいだけならば同様にconcat関数を作りその中でmutを使えばいい http://mevius.5ch.net/test/read.cgi/tech/1692105879/478
479: デフォルトの名無しさん [sage] 2023/10/12(木) 12:52:32.93 ID:5Y8Kw2UP >>477 そんな表層的なことを問題にするのは愚か 例えばmutを表層的に使っていない>>430はそこで呼び出しているpartitionとconcatそれぞれのなかでmutを使っている 当たり前だがデータを組み立てたり書き換える処理は全てmutにたどりつく >>474でも表層的にmutを無くしたいだけならば同様にconcat関数を作りその中でmutを使えばいい http://mevius.5ch.net/test/read.cgi/tech/1692105879/479
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.037s