scratch自动算24点 5.结果合成

发表在    IT女(Java部落) 08-15 09:48:32

3 3581 4

欢迎看到我的scratch自动算24点第五集更新!!!

这期比较难,我准备精讲。

这期讲的是结果合成,也就是把所有的运算结果都输入进链表“ok”里。

这个很简单,是吗?

其实不是。我可以说,这是5期以来最难的一章!

好了,废话不多说,开始吧!!!


首先,我们先试着输入一个2个数的计算结果,并将它加入链表中。

这个其实很简单,只要运用我上次运算模块,分分钟做出来。

比如说我们就做一个“2+3”模块,看看链表中会不会出现5。

那么,我们将如何做这个呢?

如果你看了我的上期帖子,你就会知道我已经帮你做好了计算模块,看看:(刊物说明:把第3个的变成1  +  2)

我们只要在“更多模块”中拖拽这条指令,就可以用了。

截图20170814183424

可以参照这个模块的定义,来输入值。

第一个数是3,那么就输入3,第2个数是2,那么就输入2。最后一个是运算符号+,看一眼定义,对应的是1。于是就输入1。

最后,由于输出结果是保存在变量“do”里的,那么就后面再加个“将do加入链表ok末尾”。

截图20170814185237截图20170814185356

试验成功!

这下,来做一个3个数的运算:

(1+7)×3

来,试试看!

所谓三个数,必须是满足四则运算的。一定有一个先算,一个后算。

如果我们把上面那条算式写成递等式会怎么样?(也许你可以从中掌握如何去编程这个算式)

  (1+7)×3

=8×3

=24

由此可见,我们是先把两个数当成两数算式,然后再把结果与第3个数做运算,那么,就应该是这样的:

截图20170814192920

你不用知道结果多少了,我看好了是24。


好了,我们已经完成了这期的第一步。


先提前说一下,我们今天做的依然是定义模块。

因为运算时的数字已经是给定了的,他们分别被保存在变量“1”“2”“3”。这个1、2集说过。

既然是给定了的,那么我们可以给这个新定义模块添加3个数字参数,他们就是“1”、“2”、“3”。

可能很多人会问:既然是一定的变量不应该是不被设为数字参数了吗,这下怎么反过来了!

等一会你就知道了,我们暂且就照我这么办。

我们知道,我们这次的目的是把3个数中所有的运算方式都放进链表“ok”里面。

所以,我们可以新建一个变量“i”来代表各种运算符号所对应的数字。

我们上次说了,其实是6种运算,所以我们可以重复执行6次,每次都将i增加1。

明白了吗?

可能你还不太明白,不过我们可以用举例子来说明一切。


我们来试试看:给你2个数:4和6,把关于这2个数的所有运算方式的结果放在“ok”链表中。

这个相对于上面2个,可能会比较难,甚至有人用笨方法直接18个定义弄上去。

这个绝对是不行的,我们来分析一下到底怎么做吧!!

截图20170814221941

这……好吧,表示真的有人用笨方法↑,这是绝对不可取的!

3数模式24点一共有108个组合,你认为你想这样吗!!!!

我们不妨来观察一下这个笨方法:你会发现,只有一个是变动的,那就是运算符号。

不管怎么样,是不是有一种想要重复执行6次的冲动啊!!!

截图20170814222247

这是有问题的,因为你的运算符号一直是1。

那怎么样既能有重复执行,又能有运算符号的变化呢?

看看上一个笨方法,我们会发现运算符号123456一直在加1,而碰巧变量中有一个“增加”,我们就可以用上了。

设定一个变量i,然后让他每次+1就行啦!是不是听我这么一说,就简单一点了呢?

不过,千万别忘了do、i的初始化哟!

截图20170814223315

如果这张图能理解的话:恭喜你,你离本季的成功又近了一步!


接下来,我们要用2、3、4。3个数,把3个数的所有运算结果都放进链表“ok”里面。

这个,就是我们本集的最终目标了。

首先,2、3、4三个数的排列方式就有3种。(123)(132)(231),。

有人要问:不是有6种组合吗你“321”、“213”“312”都没算呢。

其实,321和231是一样的,都是先算23,后算1.

213和123是一样的,都是先算12,后算3.

312和132是一样的,都是先算13,后算2.

既然数字有3种组合,第一个运算符号有6种,第二个运算符号也有6种,一共108种!

根据刚才的方法,我们利用“i”变量来做了一个这样的脚本

截图20170815092408

我们会发现,又多了一个“i2”变量,那么他怎么办呢?

我们有一种数组合的方法,每当i增加6遍,i2增加1遍,然后i又变成0。我们把上面看成一个整体,再次嵌套在i2的增加。

那么,应该是这样的:

截图20170815093104

到这里,所有运算符号的组合就完成了,但我们还得考虑数字组合!!

为了缩短脚本长度,我们把上面那个看成一个定义,3个数字参数就是我们要的数字。

截图20170815093933

怎么样,不错吧!

那么最后,我们只要考虑一下数字顺序的组合了!!

截图20170815094150

那么,我们如何把这个模块运用到变量“1”“2”“3”呢?

比你想的简单得多!

截图20170815094406

在此,我们的任务完成啦!!!!!!!!!!!!!!!!!

如果觉得还是看不大懂,可以多看几遍,一定有所收获。


登录或注册后发布评论