人力资源机器1-6满星攻略

《人力资源机器》(原名:Human Resource Machine,又译:程序员升职记)这款游戏,所使用的游戏规则接近于计算机的汇编,可视化了底层代码,去其繁,益其乐。无论是入坑编程还是初试算法思想都是非常好的选择。当然,仅仅是作为一款益智游戏也是蛮不错的。从一名基层员工,一步一步从基层爬上巅峰,是不是特别地有意思?

简单地介绍一下

在HRM里,你将会扮演Human Resource Machine公司的一名职员,从基层开始锻炼,一步一步走上职场巅峰(然后被解雇?)。将命令合理地组合,处理上司给你的数据然后输出正确的结果,从而通关,让电梯上升一层。在通关的同时也会有一些剧情(对,HRM这小游戏有一点剧情)。

玩法

HRM,操作界面.png

游戏的场景在一间办公室里,最左侧是输入(INBOX),右边是输出(OUTBOX),中间是地砖(相当于寄存器/RAM),你需要在界面最右侧的指令栏里,通过点击+拖拽组合你的指令,然后点击界面下方的“运行”(上司打断道:听清楚,这叫播放!),你所扮演的员工将会按照程序完成任务。随着剧情的推进,办公室里的场景也有一些细节上的变化,它们正等待着你的仔细观察。

通关方法:只需要输出结果正确即可通关。当然了,你需要编写合适的程序从而保障任务得以顺利完成,并且上司会暗中拿同样类型但是不同的输入数据去监测你的程序,一旦不能通过某组测试数据,我们也是无法通关的。

强迫症诊断标准:游戏里还有挑战内容,通过较少的步数,使用更少的指令完成任务,可以分别获得一星的奖励。当然,有些任务可能无法一箭双雕,需要通过不同代码分别获得两颗星的奖励。

便捷操作:游戏提供了撤销、复制、粘贴、清除等功能,并且你还能在你的代码和地砖上写注释!真的是非常贴心。

HRM,电梯.png

电梯:不完成前一层的任务,就无法进入下一层,或者是获得别的分支。就像生活一样,不克服困难,怎能进入下一个阶段?

指令都有哪些?

我们会在指令首次出现的层里一一介绍。

我的体验

与编程不同的是,在HRM里没有常量,包括每一层地砖上自带的数字,你可以随意使用和修改。加减乘除,各种运算,也比以往有了更加灵活的处理方式,在多次尝试(或者查攻略)之后你会发现那种处理方式到底有多么令人称赞。

花了很久的时间一点一点改进,一点一点优化,终于拿了HRM的全部满星。怎能不写一篇攻略来庆祝一下?

QQ图片20220201000008.jpg

攻略

HRM的输入和输出的数量是确定的。也就是说,你可以连续写inboxoutbox若干次,从而完成任务。

在我写的攻略系列中,你可能会看到的代码有以下几种类型:

  • 最朴素的解法:暴力代码
  • 同时满星的代码:AK代码
  • 步数超了,但是指令条数达成目标的代码:TLE代码
  • 指令条数超了,但是步数没超的代码:MLE代码

一些基本的要素

所有的东西都可以与游戏画面一一对应。当你不理解攻略中的某些操作的时候,再来看看这里会比较好。

  • 就是手员工的手,手上可能拿着一样东西,从而让这样东西参与到程序中来;也可能空手。简言之:可拿可不拿,只能拿一样东西,拿新的东西会替换掉旧的东西。据说,这是比Minecraft的史蒂夫的麒麟臂更强的手,它可以在短时间内拿起任何东西,也可以抛出手上的任何东西,然后把它们摔碎!(误)每当你拿取新的东西时,手上原有的东西就会被员工抛出,然后在地上摔碎。当然了,如果此前你手上没有东西,那么显然员工只会把新的东西好好地放在手上。
  • inboxinbox就是界面左边的传送带。传送带上有一些物品物品可能是数字,也可能是单个的字符。你可以每次从inbox内拿出一件物品,然后放在手上。如果此前手上已经有了东西,那么新拿的东西会替换掉旧的东西
  • outboxoutbox就是界面右边的传送带,你将把手上的物品放上去。当然,员工空手时是不能向传送带放东西的,把物品放上去之后,员工的手就空了。
  • 地砖:地砖就是画面中间的那些方格,每个方格都有唯一的一个数字编号(即地址),你可以通过地址来访问它们。地砖相当于寄存器或者是ROM,它们都能存放唯一的物品。你可以从地砖上复制一份物品,也可以用手上的物品去替换它原有的内容。

电梯1层-收发室

新指令!

→inbox:从inbox里面拿出一件物品,放在上。我们也简称这条指令为inbox

outbox→:把你手上的东西放进outbox里。同样地,简称这条指令为outbox

思路是……

解:略,请读者自证(手动滑稽)

AK代码:

1
2
3
4
5
6
7
8
9
-- HUMAN RESOURCE MACHINE PROGRAM --

INBOX
OUTBOX
INBOX
OUTBOX
INBOX
OUTBOX

电梯2层-繁忙的收发室

新指令!

jump:当程序运行遇到到jump时,程序就会跳转到箭头所指位置,然后继续执行后面的命令。运用jump,我们可以实现跳转,也可以实现复读机一样的循环。

思路是……

这关告诉了我们如何使用jump创建一个循环,就是跑到前边去,把自己以前执行过的命令再执行一遍。这关有两种思路,一种是直接反复使用INBOX和OUTBOX打暴力;另一种,也是最一般的思路,就是把一对inboxoutbox放在循环里

TLE代码:

1
2
3
4
5
6
7
-- HUMAN RESOURCE MACHINE PROGRAM --

a:
INBOX
OUTBOX
JUMP a

MLE代码是想告诉我们,在这个游戏机制之下,想要获得满星,有可能要写非常复杂的代码。这个思想在后面会发挥很大的作用。MLE代码:

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
-- HUMAN RESOURCE MACHINE PROGRAM --

INBOX
OUTBOX
INBOX
OUTBOX
INBOX
OUTBOX
INBOX
OUTBOX
INBOX
OUTBOX
INBOX
OUTBOX
INBOX
OUTBOX
INBOX
OUTBOX
INBOX
OUTBOX
INBOX
OUTBOX
INBOX
OUTBOX
INBOX
OUTBOX
INBOX
OUTBOX

电梯3层-复印楼层

新指令!

copyfrom:将地砖上的物品复制到你的手上。使用它会替换你手上原有的内容。

思路是……

这层就是要教给我们怎么使用copyfrom。而且要我们直接输出”BUG“,非常好玩儿。

思路:分别直接复制B、U、G,复制完成后就直接输出就好。

AK代码:

1
2
3
4
5
6
7
8
9
-- HUMAN RESOURCE MACHINE PROGRAM --

COPYFROM 4
OUTBOX
COPYFROM 0
OUTBOX
COPYFROM 3
OUTBOX

电梯4层-解扰码器

新指令!

copyto:既然能copyfrom,那么反过来就能copyto。顾名思义,把手上的内容复制到地砖上。使用它会替换地砖原有的内容。

思路是……

告诉我们如何使用copyto

AK代码的思路是,如果输入的两个东西分别是甲、乙,那么输出的时候就是乙、甲。先取一个输出,然后记录一下(copyto到地砖上),再取第二个输入,直接把第二个输出出去,然后再把第一个拿起来(copyfrom),输出出去。

AK代码:

1
2
3
4
5
6
7
8
9
10
11
-- HUMAN RESOURCE MACHINE PROGRAM --

a:
INBOX
COPYTO 0
INBOX
OUTBOX
COPYFROM 0
OUTBOX
JUMP a

电梯5层-咖啡时间

剧情关,没有任务,以后会把剧情放在一块儿写。

电梯6层-多雨之夏

新指令!

add:无论你拿着什么值,都会讲地砖上制定地砖的内容加上你手中的值,结果再返回到你的手中。

思路是……

幼儿园级别的题

AK代码:

1
2
3
4
5
6
7
8
9
10
-- HUMAN RESOURCE MACHINE PROGRAM --

a:
INBOX
COPYTO 0
INBOX
ADD 0
OUTBOX
JUMP a

勘误

等我把Github Commits弄好就好了

作者

勇敢梧桐树

发布于

2022-02-09

更新于

2023-01-04

许可协议

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×