检测数码管

时间限制: 500 ms 内存限制: 65536 kb
总通过人数: 0 总提交人数: 0

题目描述

qxforever 在《电子设计基础训练》课上学习了七段数码管的使用方法。数码管能够方便的显示出 $0$ 到 $9$ 的数字。以下是每个数字的表示形式。

假设 LED 手表的屏幕由四个七段数码管(表示小时和分钟)和中间两个短管(表示冒号 : ) 组成。

手表上显示的时间可以抽象为 $7$ 行长度为 $21$ 的字符串。每个七段数码管用 $7\times4$ ( $7$ 行 $4$ 列)的字符串表示,数码管与数码管或冒号之间用一列 . 隔开。每个数码管由两个字符表示,冒号上下各用一个字符表示。X 代表这段数码管是亮的,. 代表其他情况(这段数码管灭或者非数码管位置)。以下是 $20:36$ 的表示

.XX...XX.....XX...XX.
...X.X..X......X.X...
...X.X..X.X....X.X...
.XX..........XX...XX.
X....X..X.X....X.X..X
X....X..X......X.X..X
.XX...XX.....XX...XX.

其中,第 $1-4$ 列表示 $2$,第 $6-9$ 列表示 $0$ ,第 $11$ 列表示冒号 ,第 $13-16$ 列表示 $3$ ,第 $18-21$ 列表示 $6$ 。

现在手表出了故障,有些数码管不能正常工作,可能表现为永远亮或永远灭。不会存在非数码管位置亮的情况。

给你连续 $n$ 分钟的手表的显示情况,请编写一个程序判断数码管的状态。

输入

第一行一个正整数 $n$ ( $n\le100$ ),含义如上所述。

接下来 $7n$ 行,每行一个长度为 $21$ 的字符串,表示手表的显示情况。每分钟之间以一个空行分隔。

输出

如果给出的情况是不可能发生的,输出 impossible

否则按以下规则输出 $7$ 行长度为 $21$ 的字符串。 如果对应位置的数码管正常工作,输出 W ;对应位置的数码管永远灭,输出 0 ; 对应位置的数码管永远亮,输出 1 ;对应位置的状态不能确定,输出 ? 。对于非数码管的位置,输出 .

输入样例

3
......XX.....XX...XX.
.....X..X...X..X....X
.....X..X.X.X..X....X
.............XX...XX.
.....X..X......X.X..X
.....X..X......X.X..X
......XX.....XX...XX.

......XX.....XX...XX.
.....X..X...X..X....X
.....X..X.X.X..X....X
.............XX...XX.
.....X..X......X.X..X
.....X..X......X.X..X
......XX.....XX...XX.

.............XX...XX.
........X...X..X....X
........X.X.X..X....X
.............XX......
........X...X..X.X..X
........X...X..X.X..X
......XX.....XX...XX.

输出样例

.??...WW.....??...??.
?..?.W..?...?..1.0..?
?..?.W..?.?.?..1.0..?
.??...??.....11...WW.
?..?.W..?.0.W..?.1..?
?..?.W..?...W..?.1..?
.??...11.....??...??.

输入样例2

2
......XX.....XX...XX.
...X....X...X..X.X..X
...X....X.X.X..X.X..X
......XX..........XX.
...X.X....X.X..X.X..X
...X.X......X..X.X..X
......XX.....XX...XX.

......XX.....XX......
...X....X...X..X.....
...X....X.X.X..X.....
......XX.............
...X.X....X.X..X.....
...X.X......X..X.....
......XX.....XX......

输出样例2

impossible

HINT

样例一中可能的情况有 (0:58,0:59,1:00) (10:58,10:59,11:00) (20:58,20:59,21:00)

AUTHOR: 冯玮琪

相关推荐