python – 修改和推广间隔重复软件的最佳方法

我想知道如何修改和推广间隔重复软件.具体来说,我想知道如何更改要显示的卡的数量,卡的范围,以及指定特定卡片组的能力.

我一直在尝试间隔重复软件一段时间,发现了以下问题:

很难确保在特定日期显示的卡的数量保持在一定范围内

而不是被告知今天要学哪些卡片,我想随时随地拿起卡片并通过几张卡片,这取决于我有多少时间

我理解后一点与间隔重复的逻辑有些冲突,但也许有可能找到妥协.

该计划必须解决的问题是“鉴于我现在被要求出示一张卡片,根据每张卡片的学习历史,重要性等,我应该选择哪张卡片”.

我认为,这种方法可以很容易地推广到增量阅读和待办事项列表管理.

由于我是编程新手,因此非常感谢有关如何实现此类算法的任何帮助.

请在下面找到我的一个非常基本的尝试来解决这个问题;这里最明显的问题是代码没有考虑到随着时间的推移卡片文件的增长.

#! /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

好的谢谢你!虽然你的观点是完全有效的,但直到现在我才意识到,我的问题的动机实际上更广泛,因此有些观点对我来说仍然是开放的.

第一,我有兴趣有sthg.对于尽可能简单的命令行
第二,我想避免基于日期的逻辑,即使这与SRS形成鲜明对比
我希望有一个简单的脚本,我可以入侵许多不同的应用程序
    如todo-list管理,阅读列表管理,播放列表管理(如http://imms.luminal.org/)等

所以,我想有一个通用的脚本,可以随机呈现项目,但重要性,容易性,紧迫性,有趣性等加权

最佳答案 您可以按照自己的方式使用
Anki.您不必每天都支付所有到期的卡,同时您可以选择比到期时更早地查看卡.

甚至可以写一个Anki插件,它会隐藏到期卡的数量,如果没有到期卡,它会在到期前自动查看卡.

但实际上,我建议不要改变这个过程.拥有一定数量的到期卡意味着当您完成每日卡片时,您会感到成功.这种成功感可以帮助您养成定期制作抽认卡的习惯.

在他们到期时没有准确地完成你的卡也会增加你的总学习时间.如果您稍后查看卡片,则会增加您将忘记的卡片数量.如果你早点回顾它们就浪费时间了.

如果您仍想重新发明轮子,首先应阅读SM2 algorithm的工作原理.

点赞