传递所有可能性的最短代码获胜
已经开发出许多基于网格的游戏,它们以打开的灯光网格开始。按下任何一个灯都会导致该灯和与其相邻的四个灯切换。切换灯光时,灯光是关闭还是打开,这取决于它是最初打开还是关闭。目标是按顺序击中灯光,导致所有灯光最后都关闭。
“ X”表示已打开的灯。“ O”表示关闭的灯。“ P”代表被按下的那个正方形。
XOO XOO XOX XOX XXX
XOX XOP -> XXO -> OPO -> XOX
OOX OOX POO XXO XOO
Intial Grid Press 1 Press 2 Press 3 Ending Grid
输入可以直接从作为参数传递的文件或标准输入中获取。输入的第一行将包含x(1 <= x <= 20),即灯光网格的大小,即x乘x。第二行将包含y(0 <= y <=(x * 3)2),即最初点亮的灯数。接下来的y行包含网格上照亮的灯光的坐标,格式为“行列”。应该重新关闭已经打开的灯(之前已切换过)。下一行将包含z,即按下的灯光数量。最终z 行以“行列”的格式包含按其按下顺序的按下的灯光的坐标。
没有输入将是不正确的。所有数字都将在网格的给定边界内。
切换所有灯光后,输出将是最后一个网格。它应该是一个n × n的网格。对于每个点亮的区域,均应使用大写字母“ X”。对于每个灯光都熄灭的区域,应使用大写字母“ O”。
离网的受影响的灯光应被忽略。在网格边缘上切换灯光只会影响网格本身上的灯光。
测试用例
输入值
4
5
2 3
2 4
3 1
3 4
4 3
7
3 3
4 4
3 4
4 2
4 1
2 2
3 2
输出量
OXOO
XOXO
XOXO
OXOO
输入值
1
3
1 1
1 1
1 1
2
1 1
1 1
输出量
X