我想知道如何修改和概括间隔重复软件。具体来说,我想知道如何更改要显示的卡片数量、卡片范围以及指定特定卡片组的能力。
一段时间以来,我一直在涉足间隔重复软件,发现以下问题:
很难保证特定日期将显示的卡片数量保持在一定范围内
与其被告知今天要学习哪张牌,我更愿意随时拿起牌组,根据我有多少时间来翻几张牌
我知道后一点与间隔重复的逻辑有些冲突,但也许可以找到折衷方案。
程序必须解决的问题是“假设我现在被要求出示一张卡片,我应该根据每张卡片的学习历史、重要性等选择哪张卡片。”
我认为这种方法可以很容易地推广到增量阅读和待办事项列表管理。
由于我是一名编程新手,因此将不胜感激有关如何实现这种算法的任何帮助。
请在下面找到我解决该问题的一个非常基本的尝试;这里最明显的问题是代码没有考虑卡片文件随时间的增长。
#! /usr/bin/env python
import random
box = []
class flashcard(object):
def __init__(self, quest, answ, score):
self.question = quest
self.answer = answ
self.score = score
# ------------------------------------------------------------------------------
f = open('list.txt','r')
for line in f:
parts = line.split('\t')
box.append(flashcard(parts[0],parts[1],int(parts[2])))
f.close()
# ------------------------------------------------------------------------------
keepgoing=True
while keepgoing:
card = random.choice(box)
if random.uniform(0,1) * card.score < 1:
a = raw_input(str(card.score) + ' ' + card.question + ' ')
if a == card.answer:
card.score *= 3
elif a == 'q':
keepgoing = False
else:
card.score = 1
print 'WRONG -->' + card.answer
else:
pass
# ------------------------------------------------------------------------------
f = open('list.txt','w')
for card in box:
f.write("%s\t%s\t%s\n" % (card.question, card.answer, card.score))
f.close()
最佳,J
好的谢谢你!虽然您的观点完全有效,但直到现在我才意识到,我提出问题的动机实际上更广泛,因此有些观点对我来说仍然是开放的。
第一,我会对某事感兴趣。对于尽可能简单的命令行 2nd 我想避免基于日期的逻辑,即使这与 SRS 3nd 略有不同我想要一个简单的脚本,我可以破解许多不同的应用程序,例如 todo - 列表管理、阅读列表管理、播放列表管理(如 http://imms.luminal.org/)等
所以,我想要一个通用脚本,可以随机呈现项目,但按重要性、容易性、紧迫性、趣味性等加权