背景

在传统的学习过程中,学生往往是按照固定的课程表和教材顺序进行学习,复习的安排也比较随意。随着教育技术的不断发展,人们开始探索如何利用计算机技术和软件来优化学习过程。记忆算法应运而生,它能够根据每个用户的学习进度和情况,如熟悉程度、学习次数等因素,来合理安排这些知识碎片下次出现的时间,以达到最佳的学习和记忆效果。

最初的记忆算法可能只是简单地基于固定的时间间隔来安排复习。比如,按照学习后的 1 天、3 天、7 天等时间点提醒用户复习知识碎片。这种模型虽然考虑了时间因素,但比较生硬,没有充分考虑用户的个体差异,如学习能力、知识掌握程度等。

随着技术的进步,记忆算法开始向个性化和智能化方向发展。现在的记忆算法可以根据用户在学习过程中的各种行为数据,来动态调整学习计划。在忆哒软件中,用户还可以手动制作算法或者从算法库中收集适合自己的算法,并且能够对算法进行深入自定义,如自定义当前剩余学习数量算法、熟悉度变化算法等。这种个性化的记忆算法能够更好地适应不同用户的学习需求。

此外,记忆算法在表达方式上也更加灵活。像忆哒软件中支持以 “表达式编程” 方式编写记忆算法,使用算术表达式、关系表达式、逻辑表达式,还可以用 if-else-use 语句进行输出,支持外置变量、自定义变量和丰富的算法函数,并且能够进行语法分析。这使得记忆算法的功能更加强大,可以实现更复杂的学习策略。

[忆哒] 记忆算法运作流程

前置说明

1
勾选算法页面中的"启用测试"后,在测试算法的可用性时不会消耗学习次数。
2
什么是变量:可以给一个变量赋予一个数值,或赋予一个算术表达式。但在记忆算法中,变量的值不能二次修改。
3
什么是赋值:key = 1,即把 1 赋予给 key 这个变量。
4
什么是函数:函数是封装了一系列操作以执行特定任务的代码块,可以接受输入参数并可能返回一个结果。在忆哒中,在学习期间进行动态值获取,通常会连接云端进行数据库扫描,从而获取期望值。

算法变量

外置变量

作用: 提供给无技术能力者微调参数的一种变量
直观名称: 通俗易懂的简短描述
变量名称: 可在if-else-use算法编辑页面中引用此变量
默认值: 此变量的默认值。外置变量的值类型始终是小数类型(浮点类型),不能传入其他变量名
值范围: 对此变量的值范围给予建议
是否暴露: 将可在记忆组面板上配置临时值,以覆盖默认值,从而满足不同记忆组使用不同数值。不勾选则会按照默认值分配数值
描述: 描述此变量的作用

自定义变量

作用: 定义算法内的自定义变量
变量名: 在算法逻辑中可引用此变量
变量值:
  • 支持小数类型(浮点类型)
  • 支持整数类型(整型)
  • 支持算数表达式,即加减乘除(+-*/),可嵌套小括号(不可使用中括号或大括号),可引用外置变量或上方的其他变量名
  • 可写入"throw xxx"进行异常抛出,以中断算法从而进行调试,其中"xxx"可替换成异常描述,也可以替换成算术表达式

变量命名规范

当你定义一个变量,你需要遵循以下命名规范,以便程序进行识别:

  • 变量名称必须由字母、数字或下划线组成,不能以数字开头
  • 变量名称不能为空白字符,也不能包含空白字符。空白字符:空格(全/半角)、制表符、换页符等
  • 变量名称不能与关键字名称相同:ifelseusethrowtruefalse
  • 变量名称不能与函数名称相同的写法。函数写法:fx_xxx()
  • 变量名称不能重复,无论是外置变量还是自定义变量

算法函数

作用:

在学习期间进行动态值获取,通常会连接云端进行数据库扫描,从而获取期望值

命名规范: fx_xxx()

算法函数非用户定义,因此只需了解其构成即可

f2_random_integer(0,10)
  • "f" - 便于快速辨认
  • "2" - 表示这个算法函数需要提供两个参数,分别是"0"与"10"
  • "random_integer" - 是语义化变量名称,即随机整数类型
解释:

如果你在算法逻辑中调用了f2_random_integer(0,10),那么相当于随机获取一个 0~10 之间的整数

支持的算法函数:

具体支持的算法函数在【算法编辑页面-变量与函数-函数】面板中可以查看

其他算法函数:

如您有其他算法函数需求,请联系开发者

算法逻辑(if-else-use)

1. 什么是算术表达式:

  • 解释:用于执行数学运算,如加法、减法、乘法和除法。
  • 符号:它们可以包含操作数(如数字或变量)和算术运算符(如+、-、*、/)。
  • 例子:3 + 4a * b(x - y) / z

2. 什么是关系表达式:

  • 解释:用于比较两个数值,并返回一个布尔值(true或false)。
  • 符号:它们包含关系运算符,如==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)和<=(小于等于)。
  • 例子:x > ya == btemperature != 20
  • x > y 中,假设 x 为 0、y 为 1,那么 0 显然小于 1,因此 x > y 的结果为 false
  • x > y 中,假设 x 为 1、y 为 0,那么 1 显然大于 0,因此 x > y 的结果为 true

3. 什么是逻辑表达式:

  • 解释:用于组合多个关系表达式,其组合的结果也是一个布尔值(true或false)
  • 符号:使用 "|"(或)、"&"(且),来进行逻辑表达。
  • "|"表示两侧只要存在一个为 true,那么组合的结果为 true,否则为 false。例如 (true | false) 的结果为 true
  • "&"表示两侧必须都是 true 时,组合的结果才能为 true,否则为 false。例如 (true & false) 的结果为 false
  • 例子:(a == b) | (c != d)(x > y) & (z < 10)
  • (x > y) & (z < 10) 中,

    • 假设 x 为 0、y 为 1、z 为 2
    • 那么在 (x > y) 中,0 显然小于 1,因此 x > y 的结果为 false
    • 那么在 (z < 10) 中,2 显然小于 10,因此 z < 10 的结果为 true
    • 最终的表达式为 false & true,即最终的结果为 false

4. if-else-use:

关键字:if-如果,else-否则,else if-否则如果,use-算法结果
if(关系表达式/逻辑表达式){
    use: 特定结构
} else if(关系表达式/逻辑表达式){
    if(关系表达式/逻辑表达式){
        use: 特定结构
    } else if(关系表达式/逻辑表达式){
        use: 特定结构
    } else {
        use: 特定结构
    }
} else {
    use: 特定结构
}
  • if-else-use可嵌套
  • 关系表达式或逻辑表达式为 true 时,才会使用对应的 use
  • 特定的记忆算法有着对应的"特定结构"

注意

1. 算法函数的参数不支持带有括号。

例如你需要随机获取一个整数,其中最小值为 0~10 之间的随机数值,最大值为20,那么如下:

不支持: result = f2_random_integer(f2_random_integer(0,10),20)
你应该定义两个变量: min_random = f2_random_integer(0,10) result = f2_random_integer(min_random,20)
2. 算法逻辑(if-else-use)不支持直接使用函数。

例如你想使用 f2_random_integer(0,10) 函数,那么需要你先定义一个变量,再在算法逻辑中使用这个变量:

random = f2_random_integer(0,10)

在算法逻辑中直接引用 random

特定记忆算法

学习数量算法

基础算法
use结构:

鼓励算法

激励系统
use结构:
任意描述

熟悉度变化算法

核心算法
use结构:
值(或算术表达式)

按钮数值分配算法

交互算法
use结构:

下次展示时间点算法

时间算法
use结构:
⚠️ 待补充