zyy想随心所欲地输出一些字符串,可是他的操作系统觉得太荒唐了,不想帮他输出。ta只好用奇怪的字母语言(就叫吧)告诉傻呆呆的电脑,他想怎么输出这几条字符串。
字符输出的流程如下:首先字符需要被“机械臂1”搬运到输出缓冲区中,再排队由“机械臂2”搬运到屏幕上。由于字符串有很多,并且zyy很任性,所以ta可以自由要求机械臂1从哪个字符串搬运字符到缓冲区里。但是因为两台机械臂都太蒟蒻了,一个周期只能各搬运1个字符。
每周期也只能传送一个操作指令,它的语法如下:
指令字符 |
操作 |
解释 |
+ |
切换字符串 |
让机械臂1从本周期开始搬运下一个字符串的字符,如果到最后一个字符串了那么回到第一个字符串 |
! |
开启输出模式 |
从本周期开始,启动机械臂2,开始向屏幕搬运字符 |
? |
关闭输出模式 |
从本周期开始,关闭机械臂2,停止向屏幕搬运字符 |
p |
开放字符缓冲区 |
从本周期开始,启动机械臂1,开始向缓冲区放入字符 |
s |
关闭字符缓冲区 |
从本周期开始,关闭机械臂1,停止向缓冲区放入字符 |
- |
保持现状 |
保持现状,本周期没有其他操作。 |
程序开始时机械臂1、2处于关闭状态,机械臂1默认对准第一个输入的字符串。
当某个字符串输出完毕时,机械臂1停止工作,开始摸鱼,直到使用+
指令把它切换到下一个没输出完字符的字符串。注意跳转之后,机械臂1指向的字符是该字符串尚未被输出的第一个字符。使用+
指令切换字符串时无需跳过已经输出完毕的字符串。
机械臂2很懒,它会在上述指令的前提下,在这个周期的最开始就判断需不需要搬运(缓冲区有没有字符),从而早点摸鱼。
当到达最后一个周期时(周期数和指令字符数量一致),输出#
表示输出结束。