楊鵬記單詞法安排表自動生成算法(Python實現)


  這幾天在尋思着要背托福詞匯,找了個方法想試一試,這個方法就是楊鵬單詞記憶法,是一種根據艾賓浩斯遺忘曲線的規律來制定的學習方法,有興趣的可以點擊https://www.douban.com/note/222850799/或者百度了解一下,下面則簡單說明要怎么來生成這個計划列表

  根據這個記憶方法,每一個list都要當天背完后分別相隔一天,兩天,四天,七天,十五天進行復習,所以要在之后能夠及時復習,則需要一個時間表來記錄每天要背到的list。然而這個時間安排表若用手工來制作,這會耗費很多精力和時間,而且還會容易出錯,不過好在這個記法是有規律的,作為一只好吃懶做的程序猿,怎么可能像個機器一樣去記錄呢,肯定要交給機器做嘛(奸笑)

  不過想出這個生成安排表算法也着實花費了不少精力,下面簡單說一下算法的小原理

  首先要生成所背詞匯書的list,以及所需要花費的天數,這個其實可以寫成程序算,但是為了偷懶,還是自己口算,反正也沒有多少天。

  第二步是根據每個日期建立一個列表,然后進行list添加,這里添加list的規律是根據記憶法來的,這里我用的是后推法,即用后面的日期去推之前積累到該天的list,在最后一個list之前(例如第96個list)和之后的判斷都有所不同

  鄙人不才,還是貼上代碼吧

import datetime

b = []
prepare_list = locals()
for i in range(1,97,1):
    a = 'list_'+str(i)
    b.append(a)

begin = datetime.date(2018,8,16)
end = datetime.date(2018,12,19)
a = []
for k in range((end-begin).days+1):
    day = begin+datetime.timedelta(days = k)
    a.append(str(day))

    

for j in range(0,125,1):
    prepare_list[a[j]] = [a[j]]
    if(j<96):
        prepare_list[a[j]].append(b[j])
        if((j-1)>=0):
            prepare_list[a[j]].append(b[j-1])
        if((j-3)>=0):
            prepare_list[a[j]].append(b[j-3])
        if((j-7)>=0):
            prepare_list[a[j]].append(b[j-7])
        if((j-14)>=0):
            prepare_list[a[j]].append(b[j-14])
        if((j-29)>=0):
            prepare_list[a[j]].append(b[j-29])
    if(j>=96):
        if((j-1)<96):
             prepare_list[a[j]].append(b[j-1])
        if((j-3)<96):
             prepare_list[a[j]].append(b[j-3])
        if((j-7)<96):
             prepare_list[a[j]].append(b[j-7])
        if((j-14)<96):
             prepare_list[a[j]].append(b[j-14])
        if((j-29)<96):
             prepare_list[a[j]].append(b[j-29])
    print(prepare_list[a[j]])
 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM