Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature request] Dilute, an alternative to Postpone #184

Closed
Expertium opened this issue Aug 13, 2023 · 8 comments
Closed

[Feature request] Dilute, an alternative to Postpone #184

Expertium opened this issue Aug 13, 2023 · 8 comments

Comments

@Expertium
Copy link
Contributor

Expertium commented Aug 13, 2023

I think we may need a new feature similar to Postpone, but targeting a specific number of reviews/day.
@L-M-Sherlock here is my idea: call the new feature "Dilute" (yes, stolen from SuperMemo again). It should change intervals in a way that makes the number of reviews/day for the next several days equal to or lower than the current value of Burden.
Say, currently burden=100, but the user has 500 due cards. Dilute should change their intervals in such a way that today (and for n more days) the number of due cards will be 100 or less. Note that it should be able to affect cards that aren't due today, but will become due within the next n days. In other words, Postpone only postpones cards that are due today, but Dilute postpones other cards too, cards that would be due tomorrow or the day after tomorrow. Sorry, but I don't have a precise step-by-step description of an algorithm that will actually do this.
Unfortunately, this can be even more detrimental to the schedule than Postpone, if used too often. Also, I think it's time we implement per-deck priority. That way low priority material will be postponed more, and high priority material will be postponed less.

Originally posted by @Expertium in #175 (comment)

@L-M-Sherlock
Copy link
Member

L-M-Sherlock commented Aug 14, 2023

If Dilute allow to postpone cards that would be due tomorrow or the day after tomorrow, it will be very complex. It could even not be finished in one loop.

I have a simple solution:

  1. Calculate the number of cards which should be diluted. In your case, it is 500 - 100 = 400.
  2. Count the cards due in X days.
  3. Calculate the free quotas for X days. Formula is quota = burden - due per day.
  4. Sum these quotas until the total quotas reach the number of cards need dilute.
  5. Sort the cards by interval. Dilute the card with longest interval to today + X.
  6. Dilute the cards in queue one by one with above sorting.
  7. When the quota of today + X is consumed out, let X = X - 1
  8. Until the queue of cards is empty.

@Expertium
Copy link
Contributor Author

I don't quite understand your algorithm, but if you think it will produce similar results to what I want, let's implement it.
I assume you're not planning to implement priority just yet?

@L-M-Sherlock
Copy link
Member

For example:

image

The blue bar represents the cards need to dilute. The red chunks are the position they will be diluted to.

@Expertium
Copy link
Contributor Author

Ah, thank you. Though this could lead to a problem if due cards > Burden is true for many many days.

@L-M-Sherlock
Copy link
Member

L-M-Sherlock commented Aug 14, 2023

I have another problem. What if the user dilutes cards in the same day with multiple times? Every time the user uses it, the current value of Burden decreases, and more cards will need to dilute.

@user1823
Copy link
Contributor

@Expertium, but why do you want to implement this? I think that we should refrain from adding too many complicated features.

Also, don't you think that the solution proposed by me (#175 (comment)) would be sufficient to deal with the issue?

@Expertium
Copy link
Contributor Author

@Expertium, but why do you want to implement this?

To deal with the backlog. Currently it's a big problem when switching from Anki to FSRS. But yeah, adding this new feature will likely create confusion and users will ask "What's the difference between Postpone and Dilute?". And if it doesn't affect cards that are due tomorrow, it won't be as helpful as I originally thought.
Ok Sherlock, then implement what user1823 suggested and close this issue.

@L-M-Sherlock
Copy link
Member

OK. I close this issue as not planned. Let's focus on #175.

@L-M-Sherlock L-M-Sherlock closed this as not planned Won't fix, can't repro, duplicate, stale Aug 14, 2023
@L-M-Sherlock L-M-Sherlock mentioned this issue Aug 3, 2024
3 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants