艾宾浩斯记忆表

为了高效背单词,许多人用艾宾浩斯记忆法,即,分别在第1,2,4,7,15天(并不精确,但差不多)记同样的单词。但是为了规划这个计划,必须有个日历。人工写比较麻烦,于是我就变了个程序,可以打印出记忆日历。人生苦短,我用PYTHON。代码如下:

import sys

class Calender:
    def __init__(self, row:int):
        self.row = row
        self.schedule = [[] for _ in range(row*7)]

    def find_2_consequtive_spare_days(self):
        for i in range(len(self.schedule)):
            if len(self.schedule[i]) == 0 and len(self.schedule[i+1]) == 0:
                return i
        return -1

    def ebinhouse(self):
        intervals = [1, 2, 4, 7, 15]
        lesson = 0
        enough = True

        while enough:
            lesson += 1
            start = self.find_2_consequtive_spare_days()
            if start < 0:
                break
            for k in intervals:
                day = start + k - 1
                if day >= len(self.schedule):
                    enough = False
                    break
                self.schedule[day].append(lesson)
            
    def print(self):
        week = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
        content = ""
        for j in range(len(week)):
            content += week[j] + "\t"
        content += "\n"

        for i in range(self.row):
            for j in range(len(week)):
                day = i * 7 + j
                content += str(self.schedule[day]) + "\t"
            content += "\n"

        print(content)

if __name__ == "__main__":
    row = 30
    if len(sys.argv) >= 2:
        row = int(sys.argv[1])

    calender = Calender(row)
    calender.ebinhouse()
    calender.print()

生成出如下表格:

Mon    Tue    Wed    Thu    Fri    Sat    Sun    
[1]    [1]    []    [1]    [2]    [2]    [1]    
[2]    [3]    [3]    [2]    [3]    [4]    [4]    
[1, 3]    [4]    [5]    [5]    [2, 4]    [5]    [6]    
[6]    [3, 5]    [6]    [7]    [7]    [4, 6]    [7]    
[8]    [8]    [5, 7]    [8]    [9]    [9]    [6, 8]    
[9]    [10]    [10]    [7, 9]    [10]    [11]    [11]    
……

其中每个数字代表一个单元,单元的单词数量可多可少,根据自己的时间定。拿走不谢。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值