考虑以下标准的15×15 填字游戏拼图网格。
我们可以通过将#
方块和(空格)用于白方块来用ASCII艺术表示。
# #
# #
#
# #
### ## ##
## #
# #
# ##
## ## ###
# #
#
# #
# #
给定上述ASCII艺术格式的填字游戏网格,请确定其包含多少个单词。(以上表格有78个字。碰巧是上周一的《纽约时报》难题。)
单词是垂直或水平延伸的两个或两个以上连续空间的组。单词以块或网格边缘开始和结束,并且始终从上到下或从左到右运行,从不对角或向后。请注意,单词可以跨越拼图的整个宽度,就像上面拼图的第六行一样。一个单词不必与另一个单词相连。
细节
- 输入将始终是包含字符
#
或(空格)的矩形,并且行之间用换行符(
\n
)分隔。您可以假定网格由任意2个不同的可打印ASCII字符(而不是#
和)组成。
- 您可以假定存在可选的尾随换行符。尾随空格字符确实会计数,因为它们会影响单词的数量。
- 网格并不总是对称的,它可能是所有空格或所有块。
- 从理论上讲,您的程序应该可以在任何大小的网格上工作,但是对于这一挑战,它永远不会大于21×21。
- 您可以将网格本身作为输入或包含网格的文件的名称。
- 从stdin或命令行参数获取输入,然后输出到stdout。
- 如果愿意,可以使用命名函数而不是程序,将网格作为字符串参数,然后通过stdout或function return输出整数或字符串。
测试用例
输入:
# # #
输出:(
7
每个空格之前有四个空格#
。如果删除每个数字符号,结果将是相同的,但是Markdown将从其他空行中删除空格。)输入:
## # ##
输出:(
0
一个字母的单词不计算在内。)输入:
###### # # #### # ## # # ## # #### #
输出:
4
输入:(5月10日的纽约时报难题)
# ## # # # # # # # ### ## # # ## # # # ## # ## # ## # # ### ## # ## ## # ## ### # # ## # ## # ## # # # ## # # ## ### # # # # # # # ## #
输出:
140
计分
以字节为单位的最短代码获胜。Tiebreaker是最早的帖子。