1
模拟(基于重力的)台球式计算机
机器 台球式游戏机仅由符号\ _ /以及大小写字母,空格和数字组成1。 \和/是坡道。来自上方的球将分别偏转到右侧或左侧。对于两个坡道,如果球从任一侧进来,它将向下偏转。 _是一个逻辑元素。它执行的逻辑是计算机中最像台球的部分。首先,来自左侧或右侧的球沿相同方向连续。来自上方的球将停止。然后,执行结束后(请参见下面的“运行机器”),如果横穿/着陆在其上的球的数量为正偶数,则从元素底部释放单个球。 一个空格什么都不做。来自任何方向的任何球都将由于重力而直线下降。 小写字母是输入。所有输入将是单个1或0。 大写字母为输出。输出的数字将是撞到其位置的台球数。 该号码1在该位置释放了一个额外的台球。它代表逻辑1。 除此以外的所有字符都会\_/导致任何方向的球由于重力而掉落。 球永远不会合并,分裂或碰撞。它们仅在从输入a _或a 释放时创建1。只有当它们掉落到地上时才会被摧毁_。 示例机器- 1 a \_/ b \_/ \/ /\ / _ _ A B 机器中永远不会有任何空白行,但是_可能会使显示空白行。 运行机器 机器按层或行运行。顶层上的所有台球运动都在第二层发生任何事情之前进行。 机器 ab \_A C 运行如下: 首先,它提示您输入a形式a:。然后,用户将输入1或0(接着回车)。它对输入重复此操作b。这是第一层的结尾。我将假设用户为两个输入都输入了1。 然后,它会跟踪第一个球(从a)的路径,该球沿着\,穿过_,进入A,然后下降到下方的位置A。然后,它跟踪出第二个球(从b)的路径,该球直接向下进入_并终止。这是第二层的结尾。 现在,在第三层之前,由于上面_有两个球交叉,因此释放了一个球。输出A上有一个球越过,因此输出A:1。 对于第三层,它跟踪第一个球的路径(从_),该球经过C并直线下降。第二个球(落入A)也直线下降。 现在,在第四层之前,由于输出上C有一个滚珠,因此输出C:1。 由于第四层为空白,因此程序终止。 总结果应该像 a:1 (the user entered the one) b:1 (same …