浅色模式

这个计算器是干嘛的?

本计算器名为“并列计算器”。顾名思义,本计算器用于解决多组数之间的运算问题。

一般计算常是多个数进行运算,例如解1 + 2。这是操作数确定的情况。

但有时候操作数不确定。例如解a + b。这里a是什么数,b又是什么数呢?

a,b∈R,我们只能够求出一个区间。 但若其取值是有限多个,比如a,b∈{0, 1},那结果也是有限多个,我们就可全部将其算出来。

不过a,b∈{0, 1}告诉我们a有两种可能,b也有两种可能,所以我们一共要求四种可能的结果。 可以发现计算的复杂度是平方上升的。既然如此,有没有计算器可以一下子算一整组数,解决这种麻烦呢

没错,那就是|简·陋| - 并列计算器

如何使用这个计算器?

使用本计算器共需四步:定义运算、定义变量、调整列宽、输表达式。

定义运算后,本计算器便可知道如何操作;
定义变量后,本计算器便可知道操作什么;
调整列宽后,本计算器便可知道操作多少次;
输表达式后,本计算器便可知道按何种顺序操作;
按“计算”按钮后,本计算器便可知道要开始算了。

定义运算

“运算”是什么

在本计算器中,运算指的是通过两个数据得到第三个数据的方法,也就是一个包含两个参数的带返回值的函数。

常见的加法、减法就可通过一个或两个数据得到第三个数据,属于一种运算。 类似的还有乘、除、与、或等等。

除了两个数据的运算,还存在只对于一个数据的运算,例如阶乘、非等等。

不仅有一个数据和两个数据的运算,还有三个的,四个的,五个的——这些我们一般称其为函数。 比如形如f(x, y, z)的函数可以有三个参数。

为何需要定义运算

世界运算千千万,在一些计算器并不能满足我们的需求时,我们自己编写运算无疑是最直接的解决方法。

其次,在代码中引用外部JavaScript脚本或者访问网络API等手法让本计算器有近乎无限的可拓展性。

进一步,基本的加减乘除也被认作一个个“运算函数”。 不特殊处理任何运算,这个计算器便由计算器抽象为了一个“运算”器。 作为模块可在几乎任何包含JavaScript代码的计算项目中运用。

由此可见,剥离实际运算带来的好处多多。

如何新建运算

(计算器左下角提供“基础配置”,内含各种运算)

本计算器共有三个面板,其中最左侧面板为“运算面板”。

运算面板上,有一个按钮“> 新运算”,点击即可显示“定义运算”弹窗。

弹窗中,共有两个输入框。其中上方的为符号输入框,中间的大输入框为代码输入框。 代码要求输入一个闭包函数表达式(注意不是语句),有一个或者两个参数用以接受操作数据,最终须返回结果数据。 例如这个加法运算:

(function (a, b) {
  return parseInt(a) + parseInt(b);
})

如果浏览器支持,也可写成箭头函数的形式。

(a, b) => parseInt(a) + parseInt(b)

如果想新建单数据运算,只消一个参数即可。例如这个阶乘:

n => {
  for (var i = 1, k = 1; i <= n; ++i) k *= i;
  return k;
}

如果一次运算又得到多种可能的结果——例如遍历组合时——可以通过一个特殊的函数cmplxRtn()返回结果。
例如下面这个运算用以组合字符串ab。 组合当然是有两种情况,一种是ab,一种是ba。这样子就需要使用这个特殊的函数,拓宽列宽来计算所有可能的结果。

(a, b) => {
  return cmplxRtn(a + b, b + a);
}

这样子经过一次这个运算,原本列宽为1的表达式会得到2列结果。 运算两次,表达式结果的列宽就是4列。

如何修改运算

点击运算面板上的运算即可其显示“定义运算”弹窗。

与新建运算相同,第一个输入框可更改运算的名称,第二个输入框可更改运算的代码。

修改完成后点击确定即可。

如何删除运算

删除运算就是将运算的名称改为空。

运算面板上,点击要删除的运算,进入弹窗,修改第一个输入框的内容为空后,点击确定,即可。

定义变量

“变量”是什么

在本计算器中,变量指的就是操作数据。

变量,顾名思义,就是会变的量。本计算器中,变量以数组的形式体现其所有可能的值。 例如有a∈{a|0<=a<=3,a∈Z},在本计算器中a就是数组[0, 1, 2, 3],表达式a的结果就为0 1 2 3

与对运算的处理类似,本计算器并不认识任何数字,一切操作数据对于本计算器来说本质上都是字符串。 所以不仅数字,任何除了空格之外的字符都可以被视作变量。

为何需要定义变量

对变量的定义是本计算器实现并列计算的方法。

一个变量象征着背后的多个操作数据,对变量的表达式就是对其所代表的数组的表达式。 每次计算取不同的数组元素,本计算器实现并列计算。

如何新建变量

(计算器左下角提供“基础配置”,内含A、B共两个象征性的变量)

本计算器共有三个面板,其中中间面板为“变量面板”。

变量面板上,有一个按钮“> 新变量”,点击即可显示“定义变量”弹窗。

弹窗中,共有两个输入框。其中上方的为变量名输入框,中间的大输入框为数据输入框。 数据输入以空格或回车分割。例如a∈{a|0<=a<=3,a∈Z},也就是[0, 1, 2, 3]的表示:

0 1 2 3

或者这样也行:

0 1
2 3

由于一切操作数据对于本计算器来说本质上都是字符串,所以操作数据直接输字符也没事。 比如对于变量今日可能的午餐的表示:

麻辣烫 牛肉粉 盖浇饭 方便面 方便面
方便面 饿肚子 方便面 方便面 方便面

如何修改变量

点击变量面板上的变量即可其显示“定义变量”弹窗。

与新建变量相同,第一个输入框可更改变量名,第二个输入框可更改变量数据。

修改完成后点击确定即可。

如何删除变量

删除变量就是将变量名改为空。

变量面板上,点击要删除的变量,进入弹窗,修改第一个输入框的内容为空后,点击确定,即可。

调整列宽

列宽是什么

列宽就是并“列”计算的那个列宽。如果变量有两种可能,那么列宽设置为2就能让计算器计算全部两种可能。

如果列宽大于变量的可能值的数量,那在多出来的那几列,变量的值会为undefined

假如列宽为1,那么本计算器表现的和普通计算器没什么两样。

为何需要调整列宽

出于技术原因,这个要手动调整。

还可以让我们在使用计算器时更有参与感。

如何调整列宽

本计算器共有三个面板,其中中间面板为“变量面板”。

变量面板上,最头上最顶上有一个固定的方块写着“列宽”,调整里头输入框的数字就可调整列宽。

输表达式

出于技术原因,本计算器只支持两个数据之间的运算。 所以一个数据的运算使用占位符~来变成两个数据的运算。 例如1的阶乘表示为1 ! ~或者~ ! 1true的非表示为true not ~或者~ not true




有任何问题请联系
QQ:2507917746
email:ccpira@163.com

本项目遵循GPL v3.0开源协议