-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhelp.html
265 lines (262 loc) · 11.2 KB
/
help.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<link rel="icon" type="image/x-icon" id="fav" />
<title>使用指南 - |简·陋|并列计算器</title>
<link rel="stylesheet" type="text/css" href="style/help.css" />
<script type="text/javascript" src="script/help/logopic.js"></script>
<script type="text/javascript" src="script/help/index.js"></script>
</head>
<body>
<div id="main">
<fieldset id='Hlogo'>
<b id="sclogo">|简·陋|</b><br />
<a>并列计算器</a>
<div>
<hr id=logoh color="#000">
</div>
<p></p>
<p></p>
<p></p>
<p></p>
<a>使用指南</a>
</fieldset><br />
<div>
<input name="inputn" id="iBD" onclick="blackday()" type="checkbox" checked /> 浅色模式
<h1>这个计算器是干嘛的?</h1>
本计算器名为“并列计算器”。顾名思义,本计算器用于解决多组数之间的运算问题。
<p></p>
<p></p>
一般计算常是多个数进行运算,例如解<span class="pre">1 + 2</span>。这是操作数确定的情况。
<p></p>
<p></p>
但有时候操作数不确定。例如解<span class="pre">a + b</span>。这里<span class="pre">a</span>是什么数,<span
class="pre">b</span>又是什么数呢?
<p></p>
<p></p>
若<span class="pre">a,b∈R</span>,我们只能够求出一个区间。
但若其取值是有限多个,比如<span class="pre">a,b∈{0, 1}</span>,那结果也是有限多个,我们就可全部将其算出来。
<p></p>
<p></p>
不过<span class="pre">a,b∈{0, 1}</span>告诉我们<span class="pre">a</span>有两种可能,<span
class="pre">b</span>也有两种可能,所以我们一共要求四种可能的结果。
可以发现计算的复杂度是平方上升的。既然如此,有没有计算器可以一下子算一整组数,解决这种麻烦呢
<p></p>
<p></p>
没错,那就是<b>|简·陋| - 并列计算器</b>。
<h1>如何使用这个计算器?</h1>
使用本计算器共需四步:定义运算、定义变量、调整列宽、输表达式。
<p></p>
<p></p>
定义运算后,本计算器便可知道如何操作;<br />
定义变量后,本计算器便可知道操作什么;<br />
调整列宽后,本计算器便可知道操作多少次;<br />
输表达式后,本计算器便可知道按何种顺序操作;<br />
按“计算”按钮后,本计算器便可知道要开始算了。
<h1>定义运算</h1>
<h2>“运算”是什么</h2>
在本计算器中,运算指的是通过两个数据得到第三个数据的方法,也就是一个包含两个参数的带返回值的函数。
<p></p>
<p></p>
常见的加法、减法就可通过一个或两个数据得到第三个数据,属于一种运算。
类似的还有乘、除、与、或等等。
<p></p>
<p></p>
除了两个数据的运算,还存在只对于一个数据的运算,例如阶乘、非等等。
<p></p>
<p></p>
不仅有一个数据和两个数据的运算,还有三个的,四个的,五个的——这些我们一般称其为函数。
比如形如<span class="pre">f(x, y, z)</span>的函数可以有三个参数。
<h2>为何需要定义运算</h2>
世界运算千千万,在一些计算器并不能满足我们的需求时,我们自己编写运算无疑是最直接的解决方法。
<p></p>
<p></p>
其次,在代码中引用外部JavaScript脚本或者访问网络API等手法让本计算器有近乎无限的可拓展性。
<p></p>
<p></p>
进一步,基本的加减乘除也被认作一个个“运算函数”。
不特殊处理任何运算,这个计算器便由计算器抽象为了一个“运算”器。
作为模块可在几乎任何包含JavaScript代码的计算项目中运用。
<p></p>
<p></p>
由此可见,剥离实际运算带来的好处多多。
<h2>如何新建运算</h2>
(计算器左下角提供“基础配置”,内含各种运算)
<p></p>
<p></p>
本计算器共有三个面板,其中最左侧面板为“运算面板”。
<p></p>
<p></p>
运算面板上,有一个按钮“> 新运算”,点击即可显示“定义运算”弹窗。
<p></p>
<p></p>
弹窗中,共有两个输入框。其中上方的为符号输入框,中间的大输入框为代码输入框。
代码要求输入一个闭包函数表达式(注意不是语句),有一个或者两个参数用以接受操作数据,最终须返回结果数据。
例如这个加法运算:
<p></p>
<p></p>
<div class="pre">
(function (a, b) {<br />
return parseInt(a) + parseInt(b);<br />
})
</div>
<p></p>
<p></p>
如果浏览器支持,也可写成箭头函数的形式。
<p></p>
<p></p>
<div class="pre">
(a, b) => parseInt(a) + parseInt(b)
</div>
<p></p>
<p></p>
如果想新建单数据运算,只消一个参数即可。例如这个阶乘:
<p></p>
<p></p>
<div class="pre">
n => {<br />
for (var i = 1, k = 1; i <= n; ++i) k *= i;<br />
return k;<br />
}
</div>
<p></p>
<p></p>
如果一次运算又得到多种可能的结果——例如遍历组合时——可以通过一个特殊的函数<span class="pre">cmplxRtn()</span>返回结果。<br />
例如下面这个运算用以组合字符串<span class="pre">a</span>和<span class="pre">b</span>。
组合当然是有两种情况,一种是<span class="pre">ab</span>,一种是<span class="pre">ba</span>。这样子就需要使用这个特殊的函数,拓宽列宽来计算所有可能的结果。
<p></p>
<p></p>
<div class="pre">
(a, b) => {<br />
return cmplxRtn(a + b, b + a);<br />
}
</div>
<p></p>
<p></p>
这样子经过一次这个运算,原本列宽为<span class="pre">1</span>的表达式会得到<span class="pre">2</span>列结果。
运算两次,表达式结果的列宽就是<span class="pre">4</span>列。
<h2>如何修改运算</h2>
点击运算面板上的运算即可其显示“定义运算”弹窗。
<p></p>
<p></p>
与新建运算相同,第一个输入框可更改运算的名称,第二个输入框可更改运算的代码。
<p></p>
<p></p>
修改完成后点击确定即可。
<h2>如何删除运算</h2>
删除运算就是将运算的名称改为空。
<p></p>
<p></p>
运算面板上,点击要删除的运算,进入弹窗,修改第一个输入框的内容为空后,点击确定,即可。
<h1>定义变量</h1>
<h2>“变量”是什么</h2>
在本计算器中,变量指的就是操作数据。
<p></p>
<p></p>
变量,顾名思义,就是会变的量。本计算器中,变量以数组的形式体现其所有可能的值。
例如有<span class="pre">a∈{a|0<=a<=3,a∈Z}</span>,在本计算器中<span class="pre">a</span>就是数组<span
class="pre">[0, 1, 2, 3]</span>,表达式<span class="pre">a</span>的结果就为<span class="pre">0 1 2 3</span>。
<p></p>
<p></p>
与对运算的处理类似,本计算器并不认识任何数字,一切操作数据对于本计算器来说本质上都是字符串。
所以不仅数字,任何除了空格之外的字符都可以被视作变量。
<p></p>
<p></p>
<h2>为何需要定义变量</h2>
对变量的定义是本计算器实现并列计算的方法。
<p></p>
<p></p>
一个变量象征着背后的多个操作数据,对变量的表达式就是对其所代表的数组的表达式。
每次计算取不同的数组元素,本计算器实现并列计算。
<h2>如何新建变量</h2>
(计算器左下角提供“基础配置”,内含A、B共两个象征性的变量)
<p></p>
<p></p>
本计算器共有三个面板,其中中间面板为“变量面板”。
<p></p>
<p></p>
变量面板上,有一个按钮“> 新变量”,点击即可显示“定义变量”弹窗。
<p></p>
<p></p>
弹窗中,共有两个输入框。其中上方的为变量名输入框,中间的大输入框为数据输入框。
数据输入以空格或回车分割。例如<span class="pre">a∈{a|0<=a<=3,a∈Z}</span>,也就是<span class="pre">[0, 1, 2,
3]</span>的表示:
<p></p>
<p></p>
<div class="pre">
0 1 2 3
</div>
<p></p>
<p></p>
或者这样也行:
<p></p>
<p></p>
<div class="pre">
0 1<br />
2 3
</div>
<p></p>
<p></p>
由于一切操作数据对于本计算器来说本质上都是字符串,所以操作数据直接输字符也没事。
比如对于变量<span class="pre">今日可能的午餐</span>的表示:
<p></p>
<p></p>
<div class="pre">
麻辣烫 牛肉粉 盖浇饭 方便面 方便面<br />
方便面 饿肚子 方便面 方便面 方便面
</div>
<h2>如何修改变量</h2>
点击变量面板上的变量即可其显示“定义变量”弹窗。
<p></p>
<p></p>
与新建变量相同,第一个输入框可更改变量名,第二个输入框可更改变量数据。
<p></p>
<p></p>
修改完成后点击确定即可。
<h2>如何删除变量</h2>
删除变量就是将变量名改为空。
<p></p>
<p></p>
变量面板上,点击要删除的变量,进入弹窗,修改第一个输入框的内容为空后,点击确定,即可。
<h1>调整列宽</h1>
<h2>列宽是什么</h2>
列宽就是并“列”计算的那个列宽。如果变量有两种可能,那么列宽设置为<span class="pre">2</span>就能让计算器计算全部两种可能。
<p></p>
<p></p>
如果列宽大于变量的可能值的数量,那在多出来的那几列,变量的值会为<span class="pre">undefined</span>。
<p></p>
<p></p>
假如列宽为<span class="pre">1</span>,那么本计算器表现的和普通计算器没什么两样。
<h2>为何需要调整列宽</h2>
出于技术原因,这个要手动调整。
<p></p>
<p></p>
还可以让我们在使用计算器时更有参与感。
<h2>如何调整列宽</h2>
本计算器共有三个面板,其中中间面板为“变量面板”。
<p></p>
<p></p>
变量面板上,最头上最顶上有一个固定的方块写着“列宽<input type="number" />”,调整里头输入框的数字就可调整列宽。
<h1>输表达式</h1>
出于技术原因,本计算器只支持两个数据之间的运算。
所以一个数据的运算使用占位符<span class="pre">~</span>来变成两个数据的运算。
例如<span class="pre">1</span>的阶乘表示为<span class="pre">1 ! ~</span>或者<span class="pre">~ ! 1</span>;
<span class="pre">true</span>的非表示为<span class="pre">true not ~</span>或者<span class="pre">~ not
true</span>。
<p></p>
<p></p>
<br /><br /><br />
<div class="about">有任何问题请联系<br />QQ:<a class="soset about">2507917746</a><br />email:<a
class="soset about">ccpira@163.com</a></div><br />
<a href="https://github.com/simple-and-crude/setcalc" id="repofont">本项目遵循GPL v3.0开源协议</a>
<hr /><br />
<div class="btmLogo">
<img id="ccpiralogopic" />
<b id="ccpiralogoccpira">CCPIRA</b>
<div id="ccpiralogofont">中国计算机编程非正式研究协会</div>
</div><br /><br />
</div>
</div>
</body>
</html>