From 6ec22e511841e0055d858045b08492859f29e1de Mon Sep 17 00:00:00 2001 From: user1823 <92206575+user1823@users.noreply.github.com> Date: Wed, 10 Jul 2024 18:58:21 +0530 Subject: [PATCH] Apply fuzz to SM2 lapse interval and respect max ivl (#3275) * Apply fuzz to SM2 lapse interval and respect max ivl Imo, there is no reason for not applying fuzz to SM2 lapse intervals * Update review.rs * Format * Update review.rs * Update review.rs * Update review.rs * Update review.rs --- rslib/src/scheduler/states/review.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/rslib/src/scheduler/states/review.rs b/rslib/src/scheduler/states/review.rs index 2f3bdbd30..2fa7d2b16 100644 --- a/rslib/src/scheduler/states/review.rs +++ b/rslib/src/scheduler/states/review.rs @@ -77,11 +77,16 @@ impl ReviewState { ctx: &StateContext, ) -> (u32, Option) { if let Some(states) = &ctx.fsrs_next_states { + // In FSRS, fuzz is applied when the card leaves the relearning + // stage (states.again.interval, Some(states.again.memory.into())) } else { - let interval = (((self.scheduled_days as f32) * ctx.lapse_multiplier) as u32) - .max(ctx.minimum_lapse_interval) - .max(1); + let (minimum, maximum) = ctx.min_and_max_review_intervals(ctx.minimum_lapse_interval); + let interval = ctx.with_review_fuzz( + (self.scheduled_days as f32) * ctx.lapse_multiplier, + minimum, + maximum, + ); (interval, None) } }