HDU 1886 Gates of Logic

正文索引 [隐藏]

传送门:http://acm.split.hdu.edu.cn/showproblem.php?pid=1886

问题描述

计算机科学与技不仅学习算法还学习计算机硬件有关的课程。一个这样的入门课程,阐述了集成电路的基本原理(“芯片”),二进制逻辑,布尔代数……你可能知道,逻辑电路的基本单元称为门。一个门是一个执行一个简单的逻辑操作的元素。他可以通过线来连接到其他门。

逻辑电路可以被画成一张有很多左边是输入右边是输出的逻辑门。每个逻辑门中,有一个符号,用于确定门型:1号代表一个或门(其输出为0当且仅当没有输入为1),&是一个与门(输出1当且仅当没有0输入),=是异或门(输出为1当且仅当有奇数输入值为1)。

你的任务就是对于这样一张图片计算出所有电路输出的值,保证一个一个输入口一定会被一个输入源接入。并且电路中没有反馈环节,即不存在一个环连接同一个电路两次。

输入

输入中包含很多张图片,每张图片至少一行至多200行并且只包含以及下字母。

  • 空格 (” “). 空格用于让其他符号在其应该在的位置上,但是行末空格可能有,可能没有。
  • 连接符 (“-“). 连接左右的导线
  • 分割线 (“|”).连接上下的导线
  • 加号 (“+”). 连接上下左右的导线
  • 小写字母 x (“x”). 连接上下/左右的导线,但是上下连接和左右连接相互不影响。
  • 等号 (“=”). 连接输入源或者输出源。在逻辑门的左边则为一个连接一个输入源,在逻辑门的右边则连接一个输出源。
  • 小写字母 o (“o”). 取反,让信号置反。
  • 井号 (“#”). 逻辑门的边框。
    另外逻辑门最小也应该是3*3的,因为需要包含一个逻辑门符号。
  • 0/1信号 (“0” and “1”). 代表一个输入源,信号永远保持其数值。
  • 大写字母 (“A” through “Z”). 逻辑电路输出源,只接受从其左边来的信号。

每张图片会用一行*隔开,数量不定,最少一个最多200个。

输出

对每张图片,字母顺序输出每个输出源的值,详见样例。图与图之间的答案空一行。

样例输入

样例输出