#P1524. Cowculations

Cowculations

描述
著名的考古学家波·瓦恩博士发现了一种原始的牛文明。在达拉斯附近的一处牧场上,出土了数百块计算石板。瓦恩博士成功破译了这些石板的含义,意识到它们代表了数学运算。他说:“我一直怀疑牛比它们表现出来的更聪明,这就是证据。重大的突破在于意识到它们无法用手指‘数数’(counting)来做数学,但它们能用蹄子思考(thinking on their feet)。但现在我有数百块这样的石板,需要帮助验证我的假设。”

编写一个程序,帮助瓦恩博士验证他的假设。本问题描述了他认为这些石板应如何解读。每块石板包含六行,每行包含一串牛符号。前两行代表牛的数字,接下来的三行代表对这些数字的运算,第六行代表结果。牛的数字使用四种符号:V、U、C 和 D,这些符号最接近牛蹄印的标记,因此我们用它们来表示符号。石板第一行和第二行的数字总是由这四种符号组成的长度为5的序列,而第六行的数字总是由这四种符号组成的长度为8的序列。

为了解读牛的计算,需要跟踪两个数字,以下称为Num1和Num2。初始时,Num1等于石板第一行的数字,Num2等于第二行的数字。但Num2的值可能会因运算而改变。共有四种可能的运算,分别由符号A、R、L和N表示。

运算A使Num2变为Num1和Num2的“和”,使用以下加法表:

AA | VV | UU | CC | DD

VV | VV | UU | CC | DD
UU | UU | CC | DD | V,UV,U
CC | CC | DD | V,UV,U | U,UU,U
DD | DD | V,UV,U | U,UU,U | C,UC,U

加法表的每个格子中,第一个符号表示加法结果,第二个符号表示进位符号。

例如:
UAV=UU A V = U
CAC=VC A C = V(进位为UU

牛加法的示例:
VUCDVAVUCDV=VDUCVVUCDV A VUCDV = VDUCV
DVVCUACVUCU=UUVCVCDVVCU A CVUCU = UUVCVC

运算R使Num2的符号向右移动一位,最右边的符号丢失,最左边补VV。例如,VVCDUVVCDU会变为VVVCDVVVCD
运算L使Num2的符号向左移动一位,最左边的符号保留,最右边补VV。例如,VVCDUVVCDU会变为VVCDUVVVCDUV
运算N是空操作,对Num2没有影响。

在对Num1和Num2执行完所有运算后,Num2的最终值应与石板第六行的标记值一致。如果Num2的最终值不足8个符号,则在左侧用VV填充(例如,VDCCCVDCCC会变为VVVVDCCCVVVVDCCC)。

瓦恩博士说:“我已经验证了所有石板在格式、行数、符号数量、符号类型等方面都符合假设。但我需要验证第1至5行描述的数学运算结果确实与第6行一致。”

输入
第一行包含一个整数NN1N101 \leq N \leq 10),表示石板的数量。接下来的6N6N行描述了NN块石板,如问题描述所示。

输出
输出共N+2N+2行。第一行输出“COWCULATIONS OUTPUT”。随后每块石板对应一行输出,结果为“YES”(石板符合瓦恩博士的假设)或“NO”(不符合)。最后一行输出“END OF OUTPUT”。

输入数据 1

5  
VVVVU  
VVVVU  
A  
A  
A  
VVVVVVUV  
VVCCV  
VVDCC  
L  
R  
A  
VVVVUCVC  
VVCCV  
VVDCC  
R  
L  
A  
VVVVUCVV  
VVUUU  
VVVVU  
A  
N  
N  
VVVVVUCU  
DDDDD  
VVVVU  
A  
L  
L  
UVVVVVVV  

输出数据 1

COWCULATIONS OUTPUT  
YES  
YES  
YES  
NO  
YES  
END OF OUTPUT  

来源
Mid-Atlantic 1996