注意:这是我的第一个 Code Golf 挑战/问题,所以我可能没有使用下面的正确格式。我不太确定如何标记这个特定问题,这应该是社区维基吗?谢谢!
这个 Code Golf 挑战是关于解决单词搜索的!
维基百科定义的单词搜索是:
单词搜索、单词查找、单词搜索、单词侦探或神秘单词拼图是一种单词游戏,它是网格中单词的字母,通常具有矩形或正方形形状。这个谜题的目的是找到并标记隐藏在盒子里的所有单词。单词可以是水平的、垂直的或对角的。通常会提供隐藏单词的列表,但更具挑战性的谜题可能会让玩家弄清楚它们。许多单词搜索谜题都有一个主题,所有隐藏的单词都与之相关。
此挑战的单词搜索都将是矩形网格,并提供要查找的单词列表。单词可以垂直、水平或对角书写。
输入输出
用户输入他们的单词搜索,然后输入要在他们的网格中找到的单词。这两个输入被传递给您将要编写的函数。如何声明和处理这些对象取决于您。
使用下面描述的策略或您自己的策略,该函数在搜索中找到特定单词并输出其起始坐标(仅行号和列号)和结束坐标。如果您发现该单词出现两次,则必须输出两组坐标。如果这个词是回文,你可以任意选择一个末端作为这个词的“开始”。
例子
输入:
A I Y R J J Y T A S V Q T Z E
X B X G R Z P W V T B K U F O
E A F L V F J J I A G B A J K
R E S U R E P U S C Y R S Y K
F B B Q Y T K O I K H E W G N
G L W Z F R F H L O R W A R E
J A O S F U E H Q V L O A Z B
J F B G I F Q X E E A L W A C
F W K Z E U U R Z R T N P L D
F L M P H D F W H F E C G W Z
B J S V O A O Y D L M S T C R
B E S J U V T C S O O X P F F
R J T L C V W R N W L Q U F I
B L T O O S Q V K R O W G N D
B C D E J Y E L W X J D F X M
要查找的单词:codegolf
输出:
row 12, column 8 --> row 5, column 1
策略
以下是您可能会考虑使用的一些策略。完全由您决定要使用哪种策略;它不必在此列表中。
- 寻找单词的第一个字母;每次出现时,查看周围的八个字母,看看单词的下一个字母是否存在。
- 与上面相同,除了寻找一个单词的一部分,它有两个并排的相同字母。
- 计算字母表中每个字母在整个网格中出现的频率,然后从您必须找到的单词中选择一个出现次数最少的字母并搜索该字母。每次出现该字母时,您都会查看其周围的八个字母,以查看该单词的下一个和前一个字母是否存在。