[過去ログ]
Rust part15 (1002レス)
Rust part15 http://mevius.5ch.net/test/read.cgi/tech/1652347700/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
151: デフォルトの名無しさん [sage] 2022/05/19(木) 19:01:17.07 ID:SnnzWk5R >>146はメモ捨ててるから計算済みのf(n)引っ張ってくるのに毎回O(n)かかるけどね イテレータと相性良いように見えるとしたら0..nループと組み合わせることしかしてこなかったmainが見せる幻想 そろそろRustの話に戻ってもらっていいですか? http://mevius.5ch.net/test/read.cgi/tech/1652347700/151
152: デフォルトの名無しさん [sage] 2022/05/19(木) 19:56:30.02 ID:X9gr9ket >>151 マジで>>133のメモ化が好ましいと思っているのか? イテレータはメモ化とも相性が良い 例えば>>146のfibonacci_iter()を含むイテレータ汎用メモ化は即席でこんな感じ fn main() { let mut memo = IterMemo::new(fibonacci_iter()); assert_eq!(memo.nth(10), Some(55)); assert_eq!(memo.nth(0), Some(0)); assert_eq!(memo.nth(30), Some(832040)); assert_eq!(memo.nth(5), Some(5)); assert_eq!(memo.nth(50), Some(12586269025)); } struct IterMemo<I> { iter: I, memo: Vec<usize>, } impl<I: Iterator<Item=usize>> IterMemo<I> { fn new(iter: I) -> Self { IterMemo { iter, memo: Vec::new() } } fn nth(&mut self, n: usize) -> Option<usize> { for _i in self.memo.len()..=n { if let Some(x) = self.iter.next() { self.memo.push(x); } } self.memo.get(n).cloned() } } http://mevius.5ch.net/test/read.cgi/tech/1652347700/152
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.038s