当前位置: 首页 > 软件库 > 程序开发 > 数学计算 >

Dentaku

数学和逻辑公式解析器
授权协议 MIT
开发语言 Ruby
所属分类 程序开发、 数学计算
软件类型 开源软件
地区 不详
投 递 者 谷梁襦宗
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Dentaku 是一种数学和逻辑公式语言的解析器和评估器,它允许在运行时将值绑定到公式中引用的变量。它旨在在不打开安全漏洞的情况下安全地评估不受信任的表达式。

例子

这可能是最简单的用代码来说明:

calculator = Dentaku::Calculator.new
calculator.evaluate('10 * 2')
#=> 2

要进入区分大小写的模式,只需将一个选项传递给计算器实例:

calculator.evaluate('Kiwi + 5', Kiwi: -2, kiwi: 2)
#=> 7
calculator = Dentaku::Calculator.new(case_sensitive: true)
calculator.evaluate('Kiwi + 5', Kiwi: -2, kiwi: 2)
#=> 3

还可以将变量值存储在计算器的内存中,然后根据这些存储的值计算表达式:

calculator.store(peaches: 15)
calculator.evaluate('peaches - 5')
#=> 10
calculator.evaluate('peaches >= 15')
#=> true

Dentaku 具有内置函数(包括ifnotminmaxsum和 round)以及定义自定义函数的能力。函数通常像 Excel 中的对应函数一样工作:

calculator.evaluate('SUM(1, 1, 2, 3, 5, 8)')
#=> 20

calculator.evaluate('if (pears < 10, 10, 20)', pears: 5)
#=> 10
calculator.evaluate('if (pears < 10, 10, 20)', pears: 15)
#=> 20

内置运算符和函数

数学:+-*/%^|,&

比较:<><=>=<>!==,

逻辑:IFANDORXORNOT,SWITCH

数字:MINMAXSUMAVGCOUNTROUNDROUNDDOWN,ROUNDUP

字符串:LEFTRIGHTMIDLENFINDSUBSTITUTECONCAT,CONTAINS

集合: MAPFILTERALLANY,PLUCK

 相关资料
  • 逻辑回归中的数学推导 逻辑回归模型是基于这样的逻辑分布得出的模型 F(x) = 1/(1+e^x) 由此也得出了二项逻辑回归分布是: P(Y=1|x) = e^(wx+b)/(1+e^(wx+b)) P(Y=0|x) = 1/(1+e^(wx+b)) 也得出了多项逻辑回归分布是: P(Y=k|x) =  e^(wx)/(1+∑e^(wx)) 那么这个 1/(1+e^x)到底是怎么来的呢?我们来证明

  • 问题内容: 您好,我经常开发JTableModels,其中某些单元格必须包含将某个简单数学公式加总的结果。该公式可以具有: 运算符(+,-,*,/) 数字常数 其他单元格引用(包含数字) 参数(引用名称如“ INTEREST_RATE”的数字) 我经常通过制作一个小的计算器类来解决该问题,该类可以解析公式,定义的语法。计算器类使用堆栈进行计算,语法始终使用波兰语表示法。 但是波兰语对我和我的用户来

  • 本文向大家介绍数学逻辑术语和定义,包括了数学逻辑术语和定义的使用技巧和注意事项,需要的朋友参考一下 重言式 重言式是一个对命题变量的每个值始终正确的公式。 示例-证明[(A→B)∧A]→B是重言式 真值表如下- 一种 乙 A→B (A→B)∧A [(A→B)∧A]→B 真正 真正 真正 真正 真正 真正 假 假 假 真正 假 真正 真正 假 真正 假 假 真正 假 真正 我们可以看到[(A→B)∧

  • 本文向大家介绍数学逻辑陈述和符号,包括了数学逻辑陈述和符号的使用技巧和注意事项,需要的朋友参考一下 主张 命题是陈述性陈述的集合,陈述性陈述具有真值“ true”或真值“ false”。命题由命题变量和连接词组成。我们用大写字母(A,B等)表示命题变量。连接词连接命题变量。 谓词 谓词是在某个特定域上定义的一个或多个变量的表达式。通过给变量赋值或量化变量,可以使带有变量的谓词成为命题。 以下是谓词

  • 本文向大家介绍数学逻辑连接词,包括了数学逻辑连接词的使用技巧和注意事项,需要的朋友参考一下 逻辑连接词是一种符号,用于连接两个或多个命题或谓词逻辑,使得结果逻辑仅取决于输入逻辑和所用连接词的含义。 通常有五个连接词是- 或(∨) AND(∧) 否定/非(¬) 暗示/如果-则(→) 当且仅当(⇔)。 OR(∨) -如果命题变量A或B中至少任何一个为真,则两个命题A和B(写为A any B)的OR运算

  • 数学环境 \placeformula[1]%给数学公式编号[引用标记] \startformula %数学环境起始声明 y=x^2 \stopformula %数学环境结束声明 这是行内的数学环境 $\int_0^1 x^2 dx$ 运算符 可以直接使用的基本运算符有: + - = < > 数学符号 命令 ± \pm × \times ÷ \div * \ast ★ \st

  • 由于缺乏信息,我在这里锁定了最后一个问题,现在我将尝试进一步解释,以消除混淆。 好的,先离开,获取一些关于我正在做什么的背景信息<我开始了一个制作数独游戏的个人项目,学习面向对象编程、数组列表、算法、模型/控制/设计层,并扩展我的编程知识<我在制作这个游戏方面已经走了很长的路,它即将完成,但我遇到了一个需要帮助解决的小问题。 当我生成3个数独,一个简单,一个中等和一个困难时,我遇到了问题。 简单和

  • 问题内容: 我正在尝试为应用程序编写一种方法,该方法采用化学式(例如“ CH3COOH”)并返回充满其符号的某种集合。 CH3COOH将返回[C,H,H,H,C,O,O,H] 我已经有一些可以工作的东西了,但是它非常复杂,并且使用了很多带有嵌套if-else结构和循环的代码。 有没有一种方法可以通过将某种正则表达式与String.split一起使用,或者以其他出色的简单代码来实现? 问题答案: 假