文章授权转载自知乎
作者:Random Forest
受到夜路川答主勇于用 python 进化自己室友的激励,我顺便深挖了一下《数码宝贝》第一部第五集中光子郎在电脑上敲出的代码,终于把原始代码跑了出来,视频在最后。 虽然这段代码会自己乱动并让甲虫兽进化,显得狂拽酷炫吊炸天,但其实和第十集出现的代码是一模一样的 (而动画里表现出的效果明显不同) 。第十集里的代码反而看得更清楚一点。 根据这张图抽出文本如下:
彩蛋:当年 X68000 系列的电脑还随附一个名为 060turbo 的软件,单独装在一个磁盘。 (https://www.zhihu.com/question/30290082/answer/840708044#ref_5) 这个软件的唯一功能是在屏幕上随机打印一张复杂的分形图形 (疑似Mandelbrot 图像?并不是很确定) 。我用模拟器试了一下,效果确实惊艳,感觉光子郎在成为分形大师的路上还需努力。 - END -
受到夜路川答主勇于用 python 进化自己室友的激励,我顺便深挖了一下《数码宝贝》第一部第五集中光子郎在电脑上敲出的代码,终于把原始代码跑了出来,视频在最后。 虽然这段代码会自己乱动并让甲虫兽进化,显得狂拽酷炫吊炸天,但其实和第十集出现的代码是一模一样的 (而动画里表现出的效果明显不同) 。第十集里的代码反而看得更清楚一点。 根据这张图抽出文本如下:
如果想重新原汁原味地运行这段代码,首先要明确它的语言和版本。注意到注释和变量定义的语法更接近 C 系语言,但还有 endwhile、func、endfunc 等关键字,可以确定这不是 VB 或者其他主流的 BASIC 系语言。
但是代码行号的格式暴露了这货肯定是个远古产物,我本来想看看光子郎电脑上这个文件的后缀名是什么,瞅了半天发现是“名称未设定 3”
(见上图)
,失去线索的我只能开始疯狂的 google……
在资料检索过程中主要发现两个问题。一是和这段代码语法相近的语言太多,比如 VFP
(Visual FoxPro,知道它的人肯定都老了)
、VimScript、SAP 采用的 ABAP、早期 PHP、伪代码的某个版本。
(https://www.unf.edu/~broggio/cop3530/3530pseu.htm)
乃至德仪计算器的自创脚本语言等等。经过一个个的尝试,发现这些语言都是形似神不似,并不是真正的答案。
第二个问题是,如果仔细看光子郎的代码,你一定会陷入困惑,因为这段代码根本不像是有一个统一的语法规则。这里举两个栗子:
- 流程控制语法不统一。120-140 行的 while-endwhile 结构,或许让你觉得和 BASIC 有一点点类似,而且顺便猜测 if 语句肯定也会有个 endif 结尾。但是 250-270 行的 if 语句居然用了大括号,更丧心病狂的是在 then 后面接大括号!
- 变量声明格式不统一。110 行是类 C 的声明格式,而 220 行的函数参数却用了类似 ECMAScript 的声明方式,但用的不是冒号是分号。这让我一度以为这段代码就是导演魔改的,是一种不存在的噩梦般的语言。
Random Forest:小练手:用Canvas绘制谢尔宾斯基三角形 https://zhuanlan.zhihu.com/p/26606208但是光子郎当时好像上小学四年级? 而且在动画里,这段程序的输出是这样的,光子郎最后靠这个成功还原了他和美美所在的迷宫。 嘛,单从这里看,感觉能进科大少年班就是了……
彩蛋:当年 X68000 系列的电脑还随附一个名为 060turbo 的软件,单独装在一个磁盘。 (https://www.zhihu.com/question/30290082/answer/840708044#ref_5) 这个软件的唯一功能是在屏幕上随机打印一张复杂的分形图形 (疑似Mandelbrot 图像?并不是很确定) 。我用模拟器试了一下,效果确实惊艳,感觉光子郎在成为分形大师的路上还需努力。 - END -