前言:
1 首先本教程完全没有追求双成就的意向(有成就也是凑巧),是面向清晰的解题思路而设计的教程。
并以浅显易懂为目标去排列代码以实现目标。
如果是追求优化和双成就的朋友,这个吧里你也许会找到较好的其他帖子。
2 因为面向的特殊性,有些地方将会出现一些诡异的安排(例如原地jump跨越一个标签),
这将会增加无谓的步骤,但这和即将介绍的三元法有着很大的关系。
3 如果有更加清晰易懂的方案,请不要客气随意在楼下发。
4 我会放出几乎不带长标签的代码以便于你们复制和方便复制去研究,
能通过这种形式教会不理解的人那是最好的了。
(从 -- HUMAN RESOURCE MACHINE PROGRAM -- 到 ===线前一行,复制下来就可以黏贴进游戏使用了)
5 同时在这里巨大感谢不愿透露姓名和来历的我的友人 @太猫鯼
在这个教程里扮演了巨大的苦力和分担了五五开的工作量。(包括修正我混乱的表达语句)
最后:感谢观众大老爷花时间来嚼我这个教程(笑。
其他唠嗑:啊……强迫症大法好,工整规范大法好】】】那么我们开始吧、
================================================
:第一关:那么首先,我们就第一次的,进入到游戏的界面里面了,
你可以看到这个界面里,有着右边的一个框,这个框里可以放入指令,而这个框将会陪伴你一段时间。
在框的左侧有着一个深色的框,那里面有着两个绿色的贴纸,显然这个贴纸是可以摘下来的,
而工人就会照着编写的指令来行动。这可真是……

-- HUMAN RESOURCE MACHINE PROGRAM --
INBOX
OUTBOX
INBOX
OUTBOX
INBOX
OUTBOX
================================================
:第二关:是的,事情远远没有结束,现在又多了一个jump指令,这是一条非常好用又丧病的指令,
有了它,你不用再放入三遍,之前的那个in out 了,你只需要把jump放在一组 in out的结尾,
然后再把另一头放到开头,这样,当按照顺序执行到jump的时候,它就会带你回到解放前……

-- HUMAN RESOURCE MACHINE PROGRAM --
a:
INBOX
OUTBOX
JUMP a
================================================
:第三关:啊看那,那是什么 那是设备管理部的员工铺的地毯,我要是有办法把他们捡起来……
……是的,你可能已经注意到一个红通通的指令,那是一个copyfrom。
他的作用也就是把地上的东西捡起来了,当然还附带一个数字,捡起哪一格里的东西。

-- HUMAN RESOURCE MACHINE PROGRAM --
COPYFROM 4
OUTBOX
COPYFROM 0
OUTBOX
COPYFROM 3
OUTBOX
================================================
:第四关:如果你觉得这关很难的话!
那没有什么关系,我有很大的把握能教会你、 这关的目的是,交换每两个输入的顺序并输出。
比如: A,B→B,A, 那首先,你可能会想以现在的能力,并不能做到这么高大上的事情,
但你看左边,可以用的指令又多了一个,那个短一点的红指令,作用是把手里的复制到地上去。
那事情就很好解决了,只要把第一格数字拿起来,放到随便一个格子里,
然后在这时候直接的输出第二个数B,然后回过头来,输出还在格子里的A,事情就解决了,
最后在结束的时候用jump,跳回到一开始的地方,就会循环了。
(你不用担心输入框里没东西的时候指令还会不会再继续运作,不会的。)
ps:为什么我会放在格子1,仅仅只是个习惯,不必深究。

-- HUMAN RESOURCE MACHINE PROGRAM --
a:
INBOX
COPYTO 1
INBOX
OUTBOX
COPYFROM 1
OUTBOX
JUMP a
================================================
:喝过咖啡后的,第六关:
天下雨了,汇编的魔爪也靠近了你一分,这时候指令框里浮现一个橙灿灿的东西……
啊那是什么……,那是一个加法指令。
加法指令很好用,你使用的时候,会用手上的数,加上地面的数字,最后拿在手里。
地面的数字不会受到任何影响,倒反而是你加之前手上的数字不复存在了。
首先就是拿起第一个数字,他注定要放在地上,那就放吧,接着拿起第二个数字,
使用了加法指令,这样你手上就有一个加法的结果了,也是输出所需要的。
最后用jump循环这个过程。
(也许你会问,啊那地上的那个数字A怎么办呢,不用担心,后来的数字会覆盖他原本的数字)

-- HUMAN RESOURCE MACHINE PROGRAM --
a:
INBOX
COPYTO 1
INBOX
ADD 1
OUTBOX
JUMP a
================================================
:第七关:自古七关…… 好像没有这样的梗。。。
但你如果下翻的快的话,一定发现了有点异样的配图,也许你会想(是不是编者出了什么bug)
对啊,为什么那里多了两个jump,而且还是毫无作用的,那么是的,在这一关,
你就要接触到三元法结构了。
那么三元法到底是什么,首先需要从他的名字开始说起,三元法 他是一种设计的方法。
这种方法里,包含着三种元素,所以叫三元法。
这三种元素分别是:
执行器,判断器,结束器。
他们分别有各自的作用,各自的书写格式,以及组合方式。
三元法的特点就是,他绝对不会给你带来什么双成就的过关,但是他最大限度的实现了可读性和结构工整。
那么你也许要说那原地jump就是工整吗……
很遗憾是的,不光是这一关,以后的很多关都会有原地jump的步骤,那些步骤有些还跨越了一个标签。
为什么会这么做呢?那是因为这个两个jump不是独立的个体,而是元素的部件之一。
第一个jump,和jump上方的jumpZ,组成的是一个判断器
而第二个jump,则是执行器用于跳出自身步骤,而使用的jump,至于跳到哪里了,结束器里。
这个第七关,就是一个最简单的三元法里会出现的结构。 DO IF DO END 执行,判断,执行,结束。
首先说说判断器,顾名思义,用于判断手中的数字,他会有三种类型的jump组成,这关才只解锁两个。
范围:02-03
接着是执行器,用来执行指令。范围:01 还有 04
最后是结束器,用来跳回起始,有些不需要跳回起始。范围:06
接着我们来讲讲这关的通关过程,以加深三元法使用的熟练。
1 首先,第一步我们就进入了执行器,拿起了数字。
2 接着,就进入了判断器。到达判断器后,判断器是否手中的数为0(指令作用详见游戏)
如果是0,判断器出口就指向了结束器,如果不是0,就指向了下一个执行器。
3 非0进入了另一个执行器,执行了输出,然后就跳入了结束器。
4 最后 被两个箭头指向的结束器跳回了起始。开始判断下一个数。
ps:jumpZ(是jump if zero的缩写)

-- HUMAN RESOURCE MACHINE PROGRAM --
a:
INBOX
JUMPZ d
JUMP b
b:
OUTBOX
JUMP c
c:
d:
JUMP a
================================================

:在第七关结束了以后,我唐突在这个位置补充巩固一下三元法书写的规则。
好的,首先是感叹你看到这里已经挺了不起,突然在第七关加入很多新的概念,也许是难以接受的。
同时也非常的酸涩。不过你不用担心,第七关详细解读了最一般的结构,
在这一层我将会稍微的补充一下三元法的内容,你就可以对这套理论系统有更完整和清楚的认识。
首先就是,三元法是一种书写和设计的模式,同样也是拥有它的特定格式,那这个格式究竟是怎么样子的。
你已经知道了,三种元素分别是差别非常大的三种。他们之间有着互不重复的作用。
首先是执行器的说明:
一个正确的执行器,是从他执行的第一个指令一路执行到执行器里最后一个指令的。
执行器甚至可以仅仅包括着一个指令(但那种情况也意味着执行完这个也就结束了)
但一般的执行器会拥有两个或者以上的指令,为什么一般是两个呢,因为第二个指令是一个jump,
执行器的结尾总会跟着一个jump的头部,因为这可以使他跳出jump区域,但是有些情况可以忽略,
比如两个执行区域上下连接在一起,而且也是顺序执行,同时他们当中没有插入什么jump尾部的指令。
既然是规范,那一定会有,一定的表达,
执行器的jump头部,一定位于执行器的底部。一定只有一个。一定是指向下方的。
也许会有多个jump尾部跳入执行器,但他们一定都在执行器最顶上。
接着是判断器的说明:
一个判断器里,会有两种或者三种类型的jump,这个之后会接触到,现在已经接触到了jumpZ了。
他的作用就是,做出判断并指向不同的地方,也许是执行器,也许是结束器,
也有可能是另一个判断器(但是这个情况非常的少,几乎没有,因为没有理由连续对同一个数判断两次)
判断器里,一定只有两到三种jump存在,一定都是朝下指向。
也许会有多个jump尾部,但同样一定在判断器顶端。
最后是结束器的说明:
结束器的作用非常的特殊,他是一个微妙的元素,他内部仅仅包含一个jump的头部,
而更加离奇的是,这个jump,也是唯一一个可以是逆向箭头的jump,这种规则也是三元法的基础。
结束器的作用也就是回跳到任何地方了,执行器也不能直接进入,而需要jump的书写来跳入结束器。
他的意义非同小可。和另外两个元素意义,他可以被数个jump尾部跳入,但是这些尾部都在jump的上方。
结束器,一定只包含一个逆向的普遍jump。
总结:除了一些简写习惯(讲会在引入标签那关提到)其他任何破坏了上述结构的写法,都不属于三元法了。
经过一番考虑,我最终还是没有引用结束器的简写规则,如我所说,结束器太意义非凡了。
好的看到这里,你可能还没有掌握的太清楚,那么请回去再看一遍吧。(或者放空大脑让自己缓缓)
这里的一段,和上面的那一段就是三元法的几乎全部内容了,
如果你掌握了,那么恭喜你之后的内容就十分的轻松了。
================================================
1 首先本教程完全没有追求双成就的意向(有成就也是凑巧),是面向清晰的解题思路而设计的教程。
并以浅显易懂为目标去排列代码以实现目标。
如果是追求优化和双成就的朋友,这个吧里你也许会找到较好的其他帖子。
2 因为面向的特殊性,有些地方将会出现一些诡异的安排(例如原地jump跨越一个标签),
这将会增加无谓的步骤,但这和即将介绍的三元法有着很大的关系。
3 如果有更加清晰易懂的方案,请不要客气随意在楼下发。
4 我会放出几乎不带长标签的代码以便于你们复制和方便复制去研究,
能通过这种形式教会不理解的人那是最好的了。
(从 -- HUMAN RESOURCE MACHINE PROGRAM -- 到 ===线前一行,复制下来就可以黏贴进游戏使用了)
5 同时在这里巨大感谢不愿透露姓名和来历的我的友人 @太猫鯼
在这个教程里扮演了巨大的苦力和分担了五五开的工作量。(包括修正我混乱的表达语句)
最后:感谢观众大老爷花时间来嚼我这个教程(笑。
其他唠嗑:啊……强迫症大法好,工整规范大法好】】】那么我们开始吧、
================================================
:第一关:那么首先,我们就第一次的,进入到游戏的界面里面了,
你可以看到这个界面里,有着右边的一个框,这个框里可以放入指令,而这个框将会陪伴你一段时间。
在框的左侧有着一个深色的框,那里面有着两个绿色的贴纸,显然这个贴纸是可以摘下来的,
而工人就会照着编写的指令来行动。这可真是……

-- HUMAN RESOURCE MACHINE PROGRAM --
INBOX
OUTBOX
INBOX
OUTBOX
INBOX
OUTBOX
================================================
:第二关:是的,事情远远没有结束,现在又多了一个jump指令,这是一条非常好用又丧病的指令,
有了它,你不用再放入三遍,之前的那个in out 了,你只需要把jump放在一组 in out的结尾,
然后再把另一头放到开头,这样,当按照顺序执行到jump的时候,它就会带你回到解放前……

-- HUMAN RESOURCE MACHINE PROGRAM --
a:
INBOX
OUTBOX
JUMP a
================================================
:第三关:啊看那,那是什么 那是设备管理部的员工铺的地毯,我要是有办法把他们捡起来……
……是的,你可能已经注意到一个红通通的指令,那是一个copyfrom。
他的作用也就是把地上的东西捡起来了,当然还附带一个数字,捡起哪一格里的东西。

-- HUMAN RESOURCE MACHINE PROGRAM --
COPYFROM 4
OUTBOX
COPYFROM 0
OUTBOX
COPYFROM 3
OUTBOX
================================================
:第四关:如果你觉得这关很难的话!
那没有什么关系,我有很大的把握能教会你、 这关的目的是,交换每两个输入的顺序并输出。
比如: A,B→B,A, 那首先,你可能会想以现在的能力,并不能做到这么高大上的事情,
但你看左边,可以用的指令又多了一个,那个短一点的红指令,作用是把手里的复制到地上去。
那事情就很好解决了,只要把第一格数字拿起来,放到随便一个格子里,
然后在这时候直接的输出第二个数B,然后回过头来,输出还在格子里的A,事情就解决了,
最后在结束的时候用jump,跳回到一开始的地方,就会循环了。
(你不用担心输入框里没东西的时候指令还会不会再继续运作,不会的。)
ps:为什么我会放在格子1,仅仅只是个习惯,不必深究。

-- HUMAN RESOURCE MACHINE PROGRAM --
a:
INBOX
COPYTO 1
INBOX
OUTBOX
COPYFROM 1
OUTBOX
JUMP a
================================================
:喝过咖啡后的,第六关:
天下雨了,汇编的魔爪也靠近了你一分,这时候指令框里浮现一个橙灿灿的东西……
啊那是什么……,那是一个加法指令。
加法指令很好用,你使用的时候,会用手上的数,加上地面的数字,最后拿在手里。
地面的数字不会受到任何影响,倒反而是你加之前手上的数字不复存在了。
首先就是拿起第一个数字,他注定要放在地上,那就放吧,接着拿起第二个数字,
使用了加法指令,这样你手上就有一个加法的结果了,也是输出所需要的。
最后用jump循环这个过程。
(也许你会问,啊那地上的那个数字A怎么办呢,不用担心,后来的数字会覆盖他原本的数字)

-- HUMAN RESOURCE MACHINE PROGRAM --
a:
INBOX
COPYTO 1
INBOX
ADD 1
OUTBOX
JUMP a
================================================
:第七关:自古七关…… 好像没有这样的梗。。。
但你如果下翻的快的话,一定发现了有点异样的配图,也许你会想(是不是编者出了什么bug)
对啊,为什么那里多了两个jump,而且还是毫无作用的,那么是的,在这一关,
你就要接触到三元法结构了。
那么三元法到底是什么,首先需要从他的名字开始说起,三元法 他是一种设计的方法。
这种方法里,包含着三种元素,所以叫三元法。
这三种元素分别是:
执行器,判断器,结束器。
他们分别有各自的作用,各自的书写格式,以及组合方式。
三元法的特点就是,他绝对不会给你带来什么双成就的过关,但是他最大限度的实现了可读性和结构工整。
那么你也许要说那原地jump就是工整吗……
很遗憾是的,不光是这一关,以后的很多关都会有原地jump的步骤,那些步骤有些还跨越了一个标签。
为什么会这么做呢?那是因为这个两个jump不是独立的个体,而是元素的部件之一。
第一个jump,和jump上方的jumpZ,组成的是一个判断器
而第二个jump,则是执行器用于跳出自身步骤,而使用的jump,至于跳到哪里了,结束器里。
这个第七关,就是一个最简单的三元法里会出现的结构。 DO IF DO END 执行,判断,执行,结束。
首先说说判断器,顾名思义,用于判断手中的数字,他会有三种类型的jump组成,这关才只解锁两个。
范围:02-03
接着是执行器,用来执行指令。范围:01 还有 04
最后是结束器,用来跳回起始,有些不需要跳回起始。范围:06
接着我们来讲讲这关的通关过程,以加深三元法使用的熟练。
1 首先,第一步我们就进入了执行器,拿起了数字。
2 接着,就进入了判断器。到达判断器后,判断器是否手中的数为0(指令作用详见游戏)
如果是0,判断器出口就指向了结束器,如果不是0,就指向了下一个执行器。
3 非0进入了另一个执行器,执行了输出,然后就跳入了结束器。
4 最后 被两个箭头指向的结束器跳回了起始。开始判断下一个数。
ps:jumpZ(是jump if zero的缩写)

-- HUMAN RESOURCE MACHINE PROGRAM --
a:
INBOX
JUMPZ d
JUMP b
b:
OUTBOX
JUMP c
c:
d:
JUMP a
================================================

:在第七关结束了以后,我唐突在这个位置补充巩固一下三元法书写的规则。
好的,首先是感叹你看到这里已经挺了不起,突然在第七关加入很多新的概念,也许是难以接受的。
同时也非常的酸涩。不过你不用担心,第七关详细解读了最一般的结构,
在这一层我将会稍微的补充一下三元法的内容,你就可以对这套理论系统有更完整和清楚的认识。
首先就是,三元法是一种书写和设计的模式,同样也是拥有它的特定格式,那这个格式究竟是怎么样子的。
你已经知道了,三种元素分别是差别非常大的三种。他们之间有着互不重复的作用。
首先是执行器的说明:
一个正确的执行器,是从他执行的第一个指令一路执行到执行器里最后一个指令的。
执行器甚至可以仅仅包括着一个指令(但那种情况也意味着执行完这个也就结束了)
但一般的执行器会拥有两个或者以上的指令,为什么一般是两个呢,因为第二个指令是一个jump,
执行器的结尾总会跟着一个jump的头部,因为这可以使他跳出jump区域,但是有些情况可以忽略,
比如两个执行区域上下连接在一起,而且也是顺序执行,同时他们当中没有插入什么jump尾部的指令。
既然是规范,那一定会有,一定的表达,
执行器的jump头部,一定位于执行器的底部。一定只有一个。一定是指向下方的。
也许会有多个jump尾部跳入执行器,但他们一定都在执行器最顶上。
接着是判断器的说明:
一个判断器里,会有两种或者三种类型的jump,这个之后会接触到,现在已经接触到了jumpZ了。
他的作用就是,做出判断并指向不同的地方,也许是执行器,也许是结束器,
也有可能是另一个判断器(但是这个情况非常的少,几乎没有,因为没有理由连续对同一个数判断两次)
判断器里,一定只有两到三种jump存在,一定都是朝下指向。
也许会有多个jump尾部,但同样一定在判断器顶端。
最后是结束器的说明:
结束器的作用非常的特殊,他是一个微妙的元素,他内部仅仅包含一个jump的头部,
而更加离奇的是,这个jump,也是唯一一个可以是逆向箭头的jump,这种规则也是三元法的基础。
结束器的作用也就是回跳到任何地方了,执行器也不能直接进入,而需要jump的书写来跳入结束器。
他的意义非同小可。和另外两个元素意义,他可以被数个jump尾部跳入,但是这些尾部都在jump的上方。
结束器,一定只包含一个逆向的普遍jump。
总结:除了一些简写习惯(讲会在引入标签那关提到)其他任何破坏了上述结构的写法,都不属于三元法了。
经过一番考虑,我最终还是没有引用结束器的简写规则,如我所说,结束器太意义非凡了。
好的看到这里,你可能还没有掌握的太清楚,那么请回去再看一遍吧。(或者放空大脑让自己缓缓)
这里的一段,和上面的那一段就是三元法的几乎全部内容了,
如果你掌握了,那么恭喜你之后的内容就十分的轻松了。
================================================