Ciao, va bene, posto il codice, ma devi sapere che prima avevo ‘’semplificato'' ciò che mi chiedeva la traccia. Ora posto la traccia completa, che è più complessa di quello che io avevo scritto prima.
Questa è la traccia completa, e ora posto il mio codice.
Ho ragionato in questo modo: mi sono creato(o almeno, questa è la mia intenzione) tre funzioni: una, che mi sostiuisce il carattere asterisco alle parole trovate in orizz, una che lo fa ma per le parole in vert, e un'altra che dovrebbe farlo in diagonale. Tutte e tre mi restituiscono la nuova matrice con gli asterischi al posto delle parole. Alla fine, faccio un controllo finale dove, se in una determinata posizione non è presente asteerisco in nessuna delle tre matrici, allora mi stampa il carattere in quella posizione. Come detto prima ,il problema lo ho con le parole in diagonale.
def elenco(K):
elenco=[]
for i in range(K):
elenco.append(input())
return elenco
def matrice(N,M):
mat=[]
for i in range(N):
mat.append([])
for j in range(M):
mat[i].append(input())
return mat
def cercaRiga(mat,N,M,elenco):
paroleCercate=[]
somma=''
for i in range(N):
for j in range(M):
somma+=mat[i][j]
for k in range(len(elenco)):
if elenco[k] in somma and elenco[k] not in paroleCercate:
paroleCercate.append(elenco[k])
for h in range(j, j-len(elenco[k]),-1):
mat[i][h]='*'
somma=''
return mat
def cercaColonna(mat, N, M, elenco):
paroleCercate=[]
somma=''
for i in range(M):
for j in range(N):
somma+=mat[j][i]
for k in range(len(elenco)):
if elenco[k] in somma and elenco[k] not in paroleCercate:
print(somma)
paroleCercate.append(elenco[k])
for h in range(j, j-len(elenco[k]),-1):
mat[h][i]='*'
somma=''
return mat
def main():
N=int(input())
M=int(input())
mat=matrice(N,M)
K=int(input())
el=elenco(K)
print(cercaDiagonale(mat, el,N, M))
main()