間隔反復ソフトウェアを変更して一般化する方法を考えています。具体的には、表示するカードの数、カードの範囲、および特定のカード デッキを指定する機能を変更する方法が気になります。
しばらくの間、間隔反復ソフトウェアを試してみたところ、次の問題が見つかりました。
特定の日付に表示されるカードの数が一定の範囲内にとどまるようにすることは困難です
今日はどのカードを覚えればいいか言われるよりも、時間に余裕があればいつでもデッキを手に取って、何枚かカードを試してみたいと思います。
後者の点は間隔を空けた繰り返しの論理と多少矛盾することは理解していますが、妥協点を見つけることができるかもしれません.
プログラムが解決しなければならない問題は、「今カードを見せるように求められた場合、各カードの学習履歴、重要性などに基づいて、どのカードを選ぶべきか」です。
このアプローチは、インクリメンタル リーディングと todo リスト管理に簡単に一般化できると思います。
私はプログラミング初心者なので、そのようなアルゴリズムを実装する方法についての助けをいただければ幸いです。
問題に対処するための私の非常に基本的な試みを以下に見つけてください。ここで最も明白な問題は、時間の経過に伴う cardfile の増大がコードで考慮されていないことです。
#! /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
大丈夫ありがとう!あなたの指摘は完全に有効ですが、私の質問の動機が実際にはより広いものであり、いくつかの点が未解決のままであることに気付いたのは今だけです.
1st 私は sthg に興味があります。可能な限り単純なコマンド ラインの場合、日付に基づくロジックは避けたいと思います。これが SRS とわずかに対照的であっても、3 番目には、todo などのさまざまなアプリケーションにハックできる単純なスクリプトが必要です。 -リスト管理、読書リスト管理、プレイリスト管理 ( http://imms.luminal.org/のように) など
したがって、項目をランダムに表示できる汎用スクリプトが必要ですが、重要性、容易さ、緊急性、面白さなどによって重み付けされます。