スレ立てるまでもない質問はここで 166匹目 (122レス)
1-

20: デフォルトの名無しさん [sage] 2024/12/17(火) 09:05:21.52 ID:ykqm5sso(1) AAS
>>18
18(1): デフォルトの名無しさん [sage] 2024/12/16(月) 23:23:08.71 ID:pEIdxfnL(1) AAS
>>11
重さ(w)があるのに価値(v)がないものを取り除いている
Rustで書くとこんな感じ
軽い順で入力が入ってくる状況で
scanで今まで来た価値(v)の最大値を求めていて
filterでその自分より前の最大値より価値(v)が大きいものだけを取り出している

fn sieve(sorted_input: impl IntoIterator<Item = (u32, u32)>) -> impl Iterator<Item = (u32, u32)> {
sorted_input
.into_iter()
.scan(0, |v_max, (w, v)| {
let pre_v_max = *v_max;
*v_max = v.max(pre_v_max);
Some((w, v, pre_v_max))
})
.filter_map(|(w, v, pre_v_max)| {
(v > pre_v_max)
.then_some((w, v))
})
}
ありがとうございます。自力で実装できるといいのですがなかなか難しいです

Rustわからなかったので入門しましたよ
まだ分からないことが多いですが同じ動作をしているようなのは確認しました
fn main(){
let vec1 = vec![(1,1),(2,3),(3,2),(4,5)];
let ans = sieve(vec1);
for i in ans {
println!("{:?}",i);
}
}
1-
あと 102 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.022s