填字游戏强迫!
克里斯,一个神秘的填字游戏瘾君子,针对其解决顺序有一套固定的算法。 我们将使用以上图像作为指导。 克里斯总是从第一个交叉线索开始,在这种情况下是1 Across。克里斯是一位能力强的填字游戏爱好者,因此假设他将始终知道他正在研究的线索的答案。 克里斯完成一个线索后,他将检查与已完成的线索相邻的所有线索(在第一种情况下为1 Down,2 Down和3 Down),然后以最低编号完成该线索。如果没有相邻的线索,他将转到步骤3。 如果线索使下一个数字(如步骤3中所述)同时具有交叉线索和向下线索,则他将首先完成跨线索(确定性为100%,这在OCD上是边界!)。 如果没有相邻的线索,他将转到下一个数字上的下一个可用线索(交叉或向下) 从第2步重复进行,直到完成所有线索。 亲爱的程序员,这就是您的责任所在。您的任务是创建代码,该代码可以在提供了填字游戏模板后,根据Chris解决问题的算法提供描述线索顺序的输出。 该代码将接受填字游戏模板的输入,其形式为.代表白色正方形和#代表黑色正方形。 范例: .....#......... .#.#.#.#.#.#.#. ...#...#....... .#.#.#.#.#.#.#. ....#.......... ##.#.#.#.#.#.#. ......#........ .###.#####.###. ........#...... .#.#.#.#.#.#.## ..........#.... .#.#.#.#.#.#.#. .......#...#... .#.#.#.#.#.#.#. .........#..... 输入可以通过以下方式进行:a)读取填字游戏的表示形式的文件,或b)填字游戏的每一行的行输入,后跟\n,第二个\n指示EOF。 然后,它将根据上面描述的算法确定克里斯解决该问题的方法。 输出必须采用一系列逗号分隔的指令格式,格式为n(A|D),其中n是线索编号,其后为Afor或Ddown。 因此,在上面的示例中(来自图像和示例模板,两者是相同的),输出将是: 1A,1D,2D,3D,9A,10A,4D,5D,6D,7D,8D,11A,12A,13A,15A,14D,15D,16A,17A,18D,19D,20A,21D,23A,22D,24A,25D,27A,28A,26D,29A,30A,31A 最短的代码胜出... 测试中 您必须在提交时提供代码,字节数以及以.和#格式表示的四个测试用例之一,以及从此输入生成的输出。有四个测试用例,以下三个以及上面的示例模板。 测试用例示例: 测试用例1 .....# .#.#.# ...#.. .#.#.# .....# ##.#.. 输出: 1A,1D,2D,3D,4A,5A,6A,7A 测试案例2 .....#.. .#.##..# …