[過去ログ] Rust part21 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
441
(1): デフォルトの名無しさん [sage] 2023/10/08(日) 08:07:41.64 ID:WAd1DVRF(1/3) AAS
同等に書けてないでしょw
445
(1): デフォルトの名無しさん [sage] 2023/10/08(日) 10:39:23.48 ID:WAd1DVRF(2/3) AAS
>>443
443(1): デフォルトの名無しさん [] 2023/10/08(日) 10:16:57.79 ID:CrdCteTP(1) AAS
次はHaskellまたはErlangでおながいしまつ
Haskell
qsort [] = []
qsort (x:xs) = qsort [y | y <- xs, y < x] ++ [x] ++ qsort [y | y <- xs, y >= x]

Erlang
qsort([]) -> [];
qsort([X|Xs]) ->
qsort([ Y || Y <- Xs, Y < X]) ++ [X] ++ qsort([ Y || Y <- Xs, Y >= X]).
453
(6): デフォルトの名無しさん [sage] 2023/10/08(日) 18:19:11.05 ID:WAd1DVRF(3/3) AAS
enumのリストで書いてみたわ
rust不慣れだから所々おかしいかも
外部リンク:ideone.com
enum List<T> {
Cons(T, Box<List<T>>),
Nil,
}
impl<T: Copy + PartialOrd> List<T> {
// 略
fn qsort(&self) -> Self {
match self {
List::Nil => List::Nil,
List::Cons(pivot, tail) => {
let (smaller, rest) = tail.partition(|x| *x < *pivot);
smaller.qsort().concat(&rest.qsort().prepend(*pivot))
}
}
}
}
fn main() {
let list = List::<i32>::nil().prepend(4).prepend(8).prepend(8).prepend(3).rev();
list.each(|n| print!("{}", n));println!("");
list.qsort().each(|n| print!("{}", n));println!("");
}
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.052s