math - 我应该在数学游戏中使用表达式解析器吗?

标签 math expression-trees evaluation

我正在为类(class)编写一些 child 数学教育软件。

我将尝试以有趣的方式向不同技能水平的学生展示随机生成的不同类型的数学问题。

使用基于计算机的数学软件的缺点之一是它的僵化。如果有人参加过在线数学类(class),您就会知道参加在线测验并因为问题的格式不完全正确或出现一些奇怪的间距问题而被丢弃的挫败感。

所以,最初我想,“我知道!我将在答案框中使用表达式解析器,这样我就能够评估他们输入的任何内容,即使它的形式不同,我也会能够检查是否是相同的答案。”因此,我启动 IDE 并开始实现 Shunting Yard Algorithm.

这将解决不采用最小形式分数的问题以及其他问题。

然而,我突然意识到,一个狡猾的学生只需将大部分问题输入到答案框中,我的表达式解析器就会尽职尽责地对其进行解析和评估,得出正确的答案!

那么,在这种情况下我不应该使用表达式解析器吗?我真的必须生成单一形式的答案并进行字符串比较吗?

最佳答案

一种可能的解决方案是记下表达式评估器评估问题的原始表达式需要多少步,并将其与最佳答案进行比较。如果差异太大,那么问题还没有得到足够的解决,你可以建议学生继续。

如果学生给出的答案比您自己定义的“最佳”更好,请不要感到惊讶!我是几个类(class)的助教/评分者,最聪明的学生通常在他们的问题集上得到的答案比教授提供的答案更好。

关于math - 我应该在数学游戏中使用表达式解析器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/807550/

相关文章:

math - 计算由 2 条贝塞尔曲线定义的曲面的边缘点?

java - 将正整数范围映射到索引范围

Javascript div 宽度倒计时

bash 仅整数

java - 使用存储在列表中的变量评估 Java 中的 boolean 表达式

python - 加号不携带

c# - 如何在 lambda 表达式参数中扩展谓词

c# - 具有格式/文化的表达式树 ToString

c# - 是否有支持任意表达式而不是一组有限的临时方法的 C# 单元测试框架?

functional-programming - Ocaml - 将代码运行时编译为字符串