>>50
登場していたSomeは値付きenumなのでデータの型です
mapは変換するだけなのでそれ自体にループ要素はないです
一方でfindなどはループを内包している高階関数になりますね
だから>>49にて「今回は可能ならばループを直接使わずに高階関数イテレータ使用」と書いたのです
宿題となっていた類似部分を別関数へ切り出しが出来ました
これでわかりやすくなったでしょうか?
fn prime<T>() -> Unfold<T, impl FnMut(&mut T) -> Option<T>>
where T: Copy + num::Zero + num::One + num::CheckedAdd + std::cmp::PartialOrd,
{
unfold(T::one(), |a| {
inc(*a, T::one(), |x| x > T::zero()) // 無条件に+1していき次の素数を探す
.inspect(|b| *a = *b) // unfoldのため値更新
.find(|b| inc(T::one(), T::one(), |x| x < *b) // 自分より小さい数で+1していき約数を見つける
.all(|c| inc(T::zero(), c, |x| x <= *b) // その約数の候補を自分以下で足し算していく
.all(|d| d != *b)))}) // 自分が倍数になっていなければOK
}
fn inc<T>(s: T, a: T, f: impl Fn(T) -> bool) -> Unfold<T, impl FnMut(&mut T) -> Option<T>>
where T: Copy + num::Zero + num::One + num::CheckedAdd + std::cmp::PartialOrd,
{
unfold(s, move |x| { *x = x.checked_add(&a)?; f(*x).then(|| *x) })
}
探検
C vs C++ vs Rust Part.2
■ このスレッドは過去ログ倉庫に格納されています
2021/12/16(木) 23:59:30.49ID:iS9fah9V
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★2 [Hitzeschleier★]
- 日本語が話せない「外国籍」の子が急増中、授業がストップ、教室から脱走も…先生にも大きな負担「日本語支援」追いつかず [七波羅探題★]
- 【女子カーリング】五輪出場決定!女子日本代表の「フォルティウス」チーム名は「より強く」の意味 [征夷大将軍★]
- 【テレビ】フジ・佐々木恭子アナ 渋谷区の『ゴミ箱を置かないと罰金』『ポイ捨も罰金2000円』に「モヤモヤもある」 [冬月記者★]
- 「暖房が使えない」「食費が高くて子どもの栄養が…」 物価高に苦しむ子育て世帯、政府に期待する支援は [蚤の市★]
- 【米国】「トランプ・ゴールドカード」の受付開始 1億5600万円でアメリカの永住権を獲得 ウェブサイトで申し込み [ぐれ★]
- エナジードリンク、危険だった。飲酒喫煙もせずランニングが趣味の54歳の若者が毎日たった8本飲むだけで脳卒中に [742348415]
- Twitter医師ら「死ぬほど勉強して博愛精神求められるとかそらみんな美容外科なるわ。嫌なら普通の医療も保険診療廃止しろ!」 [762037879]
- 高市「野党はもう債権とか為替の話はしないで!よく分からないから答えない!」 [884040186]
- 在宅なのにここ見てる奴wwwwwwwwwwww
- (*´ω`*)おはぎドリームのロゴと公式ゆるキャラ「おはぎ犬」が出来たんだあ
- 【悲報】テレ朝の飛び降り、既に死んでた説が浮上
