自动解决单词搜索 (4x4)

Solve Word Search Automatically (4x4)

我尝试制作一个单词搜索求解器,我不是程序员,但我在日常使用 python 来自动执行小任务 :) 在这种情况下,我想通过展示给祖母一个惊喜她说计算机可以自动解决她的报纸单词搜索,这是 4x4 并且可以沿任何方向移动到附近的单元格(不仅是对角线,垂直和水平,如果单元格靠近则有效)这是我制作的代码

到目前为止,我已经设法找到与字母匹配的单词,但我不知道如何教你只取附近单元格的单词,非常感谢你的帮助

注意:文件 "twl06.txt" 只是一个包含单词的字典。

更新:对于附近的单元格,我的意思是单词不是以简单的直线形成的,因为当单元格在它旁边时它们是有效的

#For example: niosijmcyhtedfio

palabra2=input("Insertar letras: ")
print ("")
print ("")
f=open("twl06.txt")
libro=f.read()

print ((palabra2[0]), (""),(palabra2[1]), (""),(palabra2[2]), (""),(palabra2[3]))
print ((palabra2[4]), (""),(palabra2[5]), (""),(palabra2[6]), (""),(palabra2[7]))
print ((palabra2[8]), (""),(palabra2[9]), (""),(palabra2[10]), (""),(palabra2[11]))
print ((palabra2[12]), (""),(palabra2[13]), (""),(palabra2[14]), (""),(palabra2[15]))
print ("")
print ("")

#palabra2 es con repeticiones
#palabra es sin repeticiones
palabra = ("".join(set(palabra2)))

comparacion = []       


with open("twl06.txt") as f:

    for line in f:
        lista1 = (list(palabra))
        lista2 = (list(line.rstrip('\n')))

        comparacion = []

        for item in lista1:
          if item in lista2:
            comparacion.append(item)

        if len(comparacion) == 3:

            if (len(lista2)) == 3:

                  print (" ".join(str(x) for x in lista2))
                  comparacion = []

        if len(comparacion) == 4:

            if (len(lista2)) == 4:

                  print (" ".join(str(x) for x in lista2))
                  comparacion = []

        if len(comparacion) == 5:

            if (len(lista2)) == 5:

                  print (" ".join(str(x) for x in lista2))
                  comparacion = []

        if len(comparacion) == 6:

            if (len(lista2)) == 6:

                  print (" ".join(str(x) for x in lista2))
                  comparacion = []

        if len(comparacion) == 7:

            if (len(lista2)) == 7:

                  print (" ".join(str(x) for x in lista2))
                  comparacion = []

f.close()

如果您将字段定义为数组的数组 (为了说明目的牺牲了正确的格式):

field= [
  [ 
    [entry1],[entry2],[entry3]
  ],[
    [entry4],[entry5],[entry6]
  ],[
    [entry7],[entry8],[entry9]
  ]
]

您的字段将按如下方式组织:

[0][0] | [0][1] | [0][2]
------------------------
[1][0] | [1][1] | [2][2]
------------------------
[2][0] | [2][1] | [2][2]

所以 field[m][n] 相邻的单元格可以被

迭代
i = m-1
while i < m+1 :
  j=n-1
  while j < n+1:
    if (i = m && j = n):
      continue #skip the cell itself
    doSomething(field[i][j])
    j = j+1
  i = i+1