【逻辑游戏】A=B: A One-Instruction Esolang
如果不想花钱买也没关系,在Steam游戏平台上搜寻「A=B demo」就找的到免费的试玩版(但也可能随着正式版的推出,试玩的Demo版本被移除)。
网路上也没看到太多讨论,就抛砖引玉来写一篇文章吧!希望可以遇到好伙伴一起来解题跟讨论内容~
游戏剧情
如果你是曾经修过程式设计课或是资讯相关领域的学生看了剧情应该会会心一笑,剧情主要是在描述一个修编译原理课的学生,在交作业时异想天开,从0开始搞了一套自己的程式语言,作业迟交还找各种理由牵拖开发新的程式语言很困难,所以需要多花点时间,希望老师能够包容,但是最开始的版本连显示「Hello world」都做不到,直接被老师无情退件。
随着章节解锁,可以看到更多教授与学生的Email往来内容,教授不断退件,学生就只好一直新增功能希望教授能给他分数避免被当,逐渐把A=B这个程式语言开发的越来越完善,对玩家来说后面的功能越复杂,游戏关卡就跟着困难了起来。
游戏运作原理
A=B的程式运作规则非常简单,大概可以将它分为四部分:
1. 只有「=」是保留字,「#」是拿来注解用的。
2.每一行程式码都必须要是左字串=右字串
3. 运行时会由上到下尝试找寻可执行的程式码
4. 找到之后会将等号左边的字串替换成右边的
额…看不懂吗?那举个例子,橘色的部分是我们写好的程式码“ab=c”,意思就是输入的字串要是出现任何ab有关的字都会变成c,所以若我们输入abc,则输出应为cc,因为前面的ab被我们的程式码替换成c了,而后面的c我们都没动它就依然存在。
再一个例子,假设我们写的程式码是”ab=”,那如果输入abc,输出应该是什么呢?
就是c哦,因为前面的ab被我们替换成没有任何东西。
这两个例子是为了能够更快速理解它到底在干嘛,所以都是先有程式码,我们再由输入什么去推论输出什么,但是实际上在游戏中我们要写的是橘色的程式部分啦!
游戏例题
我取最前面几题来实际演练一下在这个游戏中我们到底要写的是什么东西,这些题目在免费的Demo版本中也都有出现过,应该算是公开的。
例题一、A到B
输入: 一个由a, b和c组成的字串(字串内容是随机生成且长度在1~7之间)。
输出: 将每个a替换成b。
范例:
输入: abc
输出: bbc
输入: baccc
输出: bbccc
输入: bccbcc
输出: bccbcc
解答:
a=b
例题二、大写
输入: 一个由a, b和c组成的字串(字串内容是随机生成且长度在1~7之间)。
输出: 将每个小写字母替换成大写字母。
范例:
输入: abc
输出: ABC
输入: accca
输出: ACCCA
输入: bcaaacab
输出: BCAAACAB
解答:
a=A
b=B
c=C
例题三、去重
输入: 一个由a, b和c组成的字串(字串内容是随机生成且长度在1~7之间)。
输出: 将连续的相同字母替换成一个字母。
范例:
输入: aabccca
输出: abca
输入: bcbaa
输出: bcba
输入: acabab
输出: acabab
比起前两题,这题才算开始,在看解答之前再想一下吧!
留一点…
空行…
思考一下…
要怎么写…
解答:
aa=a
bb=b
cc=c
游戏画面
游戏画面也是走一个极简风格,仿佛真的在开发程式,或许对完全没写过程式的人来说会是一个有趣的体验!
在游戏内还开发了另一个小游戏叫「盘古计画」,是一个蛮有趣的策略小游戏,故事大致上就是玩家扮演火星上的拓荒者,需要在有限的时间内发展火星殖民地同时尽可能的完成大型建设任务。
希望经过图解以及各种例题能够勾起你的兴趣,主要也是想找一些伴一起讨论,所以快点一起下载来玩玩并讨论解法! (因为后面有点难QQ)
原文连结ITechNote 科技随笔
最后谢谢你愿意花时间来看我的文章,如果还喜欢的话希望能获得你的追踪支持,以及拍手化赞为赏,让我有机会可以发表一篇写文章换啤酒的心得文o((>ω< ))o
喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!
- 来自作者
- 相关推荐