Instead of presenting the whole pool of cards to the learner, each round he/she is presented with cards based on her/his proficiency level (PL) for a card/on the results of the previous round according to the rules:
Each round consists of all cards currently in PL1, and 1/PL for the next PLs (except from the last one), so ½ cards from PL2, ⅓ from PL3 and so forth (the number of cards picked will be rounded upwards)
Cards in the last PL are considered to be completed. No card will be picked from this PL.
The LIFO method should be used to pick cards from different PLs. The cards that have been in the PL the longest will be preferred over cards that have been added later.
If PL1 is empty when a new round starts, make PL2 the new PL1, PL3 the new PL2 and so forth.
The algorithm doesn’t reflect the original Leitner system, but will also make sure that cards that have been answered correctly are less likely to be presented to the learner in the next round than cards that have been answered incorrectly.
Note to self: Fix the resize/placement issue when using lots of diverse media on different cards
Can't be fully (UX)reviewed until and are done, because the latter allows to go to the next round. Works on paper
Code looks fine and this works nicely, good job!