生成一个程序以正确地编号填字游戏网格。
输入项
输入将是代表填字游戏网格的文件的名称。输入的文件名可以作为参数传递给标准输入,也可以通过硬编码以外的其他常规方式传递。
网格文件格式:文本文件。第一行由两个空格分隔的整数常量M
和组成N
。在该行之后是M
各行,各行由N
从中选择的字符(加上新行)组成[#A-Z ]
。这些字符被解释为'#'
指示方块被遮挡,' '
拼图中没有已知内容的空心方块以及任何字母是包含该字母的空心方块。
输出量
输出将是一个编号文件,并且可以发送到标准输出,从输入文件名派生名称的文件,用户指定的文件或其他常规目标。
编号文件格式文本文件。以“#”开头的行将被忽略,并可用于注释。所有其他行包含一个制表符分隔三重峰i
,m
,n
其中i
表示在网格上要打印的数,m
和n
表示在它应该被打印的方块的行和列。行数和列数均从1开始。
编号方案
正确编号的网格具有以下属性:
- 编号从1开始。
- 没有任何列或正方形的范围是未编号的。(您可以假设问题中将不存在单个字符的答案。)
- 通过从上到下扫描(从左到右),将按计数顺序遇到数字。(因此,每个水平跨度都在其最左边的正方形处编号,并且每一列都在其最上面的正方形处编号。)
测试输入和预期输出
输入:
5 5
# ##
#
#
#
## #
输出(忽略注释行):
1 1 2
2 1 3
3 2 2
4 2 4
5 2 5
6 3 1
7 3 4
8 4 1
9 4 3
10 5 3
在旁边
这是有望与填字游戏相关的几个挑战中的第一个。我计划在整个过程中使用一套一致的文件格式,并在此过程中建立一套与纵横字谜相关的实用程序。例如,随后的拼图将要求根据该拼图的输入和输出来打印ASCII版本的填字游戏。
'\n'
平台上为ASCII十进制20,在所有平台上均以c 表示。假定输入文件是在将处理该文件的同一系统上生成的,因此此问题应该是透明的。关于代码高尔夫球的一般注意事项:如果您使用的是陌生的语言或在陌生的平台上工作,请简单地写下任何可能令读者惊讶的内容。人们会在评估您的提交时对此予以考虑。