这就是问题:
要解决这个难题,您需要搜索然后从 wordsearch 中删除列表中所有单词的 OCCURRENCES(如果有多个)。
将保留的图表字母,按行和列的顺序全部排列,它们将形成游戏的解决方案。
单词可以水平(从右到左,或从左到右),垂直(向下或向下朝向顶部)和对角线(从上到下或从下到上)出现在图表中。
定义一个函数es1(ftxt),它取一个文本文件的地址,包含一个十字形的字图,并返回游戏的字符串解。
fname 文件包含单词列表后面的单词搜索。图表前面的一系列 1 个或多个空行将图表与单词列表分开,并在单词列表之后。该图是按行记录的(每行一行和连续行),每行的制表符由单个字符('\t')分隔。连续忙字列表,每行一个字。
O T N E G R A S A E
R N N C O R A L L O
O A I B L U E E V G
U T O R E N T I I A
V I O L E T T O O R
O C R A R I A E L O
D A B I M A L V A P
I P C I E L O G L R
C O R P O S O U A O
A P I E N O M I L P
ACIDO
ARGENTO
BLU
CIELO
CORALLO
CORPOSO
ELETTRICO
LATTE
LIMONE
MALVA
NERO
OCRA
OPACITA
ORO
PAGLIERINO
PIENO
PORPORA
PRIMITIVO
VIOLA
VIOLETTO
我已经找到了所有的行、列和50%的对角线,但是我不知道如何找到所有方向找到的字符的坐标来删除它然后有解决方案。
这是我的代码:
with open('cp5_Colori.txt', 'r') as f:
data=f.read().replace("\t","")
data=data.split("\n\n")
lista_parole=data[1].split()
lista_orizzontale=data[0].split()
oriz_contraria=[x[::-1] for x in lista_orizzontale]
diz={}
c=0
b=0
cruzi_verticali=[]
for x in lista_parole: #loop to find rows and add the
found
words to a diz
for y in lista_orizzontale:
if x in y:
diz[x]=1
for z in oriz_contraria:
if x in z:
diz[x]=1
while c <= len(lista_orizzontale):
cruzi_verticali.append(lista_orizzontale[c][b]) #loop for
columns
c+=1
if c==len(lista_orizzontale):
cruzi_verticali.append("///")
c=0
b+=1
if b==len(lista_orizzontale):
c=len(lista_orizzontale)+1
joinata="".join(cruzi_verticali)
parole_verticali=joinata.split("///")
vert_contraria=[k[::-1] for k in parole_verticali] #convert to a list
of
strings and find
the
reversed of
colums
conta=0
conta2=0
for x in lista_parole:
for y in parole_verticali:
if x in y: #loop to add search word to
the diz
diz[x]=1
for z in vert_contraria:
if x in z:
diz[x]=1
cruzi_diagonali=[]
parole_diagonali=[]
diag_contraria=[]
prova=[]
itera=len(parole_verticali)**2
while len(prova)!=len(parole_verticali)-1:
cruzi_diagonali.append(parole_verticali[conta][conta2])
conta+=1
conta2+=1
if conta==len(lista_orizzontale):
cruzi_diagonali.append("///")
#loop to find a part of
diagonals
if conta==len(parole_verticali)-1:
conta=0
if conta==0:
prova.append(0)
conta=conta+len(prova)
conta2=0
prova2=[]
conta3=0
conta4=1
while len(prova2)!=len(parole_verticali)-1:
cruzi_diagonali.append(parole_verticali[conta3][conta4])
conta3+=1
conta4+=1
if conta4==len(lista_orizzontale):
cruzi_diagonali.append("///")
#loop to find lower
diagonals
if conta4==len(parole_verticali)-1:
conta4=0
if conta4==0:
prova2.append(0)
conta4=conta4+len(prova2)
conta3=0
joinata2="".join(cruzi_diagonali)
parole_diagonali=joinata2.split("///") #convert diagonals
into
a list of strings
diag_contraria=[k[::-1] for k in parole_diagonali]
for x in lista_parole:
for y in set(parole_diagonali):
if x in y: #loop to add the found words in
the dictionary as keys
diz[x]=1
for z in set(diag_contraria):
if x in z:
diz[x]=1
soluzione=[]
lista_totale=[]
lista_orizzontale2=lista_orizzontale[:]
for k in diz.keys():
for k2 in lista_orizzontale2: #all the found words in
the
row replaced with "*"
if k in k2:
hg=len(k)*"*"
k3=k2.replace(k,hg)
lista_orizzontale2.append(k3)
if "*" not in k2:
lista_orizzontale2.remove(k2)
有人可以通过在 wordsearch 中找到找到的字母的所有坐标来帮助我吗?