[過去ログ]
Rust part15 (1002レス)
Rust part15 http://mevius.5ch.net/test/read.cgi/tech/1652347700/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
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
157: デフォルトの名無しさん [sage] 2022/05/19(木) 21:29:51.14 ID:u7/IlrFk >>152 イテレータの規約に反したオレオレnth()はやめてくれ IterMemoなんて名前の構造体にnth()が実装されてればイテレータのnth()と勘違いしてしまう http://mevius.5ch.net/test/read.cgi/tech/1652347700/157
159: デフォルトの名無しさん [sage] 2022/05/19(木) 21:51:56.08 ID:MGh63lg3 メモ化と個別機能が完全に分離できている>>152の方が良さげ http://mevius.5ch.net/test/read.cgi/tech/1652347700/159
164: デフォルトの名無しさん [sage] 2022/05/19(木) 22:05:28.50 ID:+v1Fmw4c >>156は普通にフィボナッチ数列を順に表示するだけでも常にVecを使ったメモ化を伴うので筋がよくない >>152はメモ化を付け外し可能で問題点も特に無いようだが http://mevius.5ch.net/test/read.cgi/tech/1652347700/164
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.032s