Encontre a palavra
Você recebe uma grade retangular de letras maiúsculas. Dentro dessa grade, uma palavra-alvo aparece determinado número de vezes. A palavra pode estar posicionada horizontalmente da esquerda para a direita ou da direita para a esquerda; verticalmente de baixo para cima ou de cima para baixo; e diagonalmente da esquerda para a direita para baixo, da direita para a esquerda para baixo, da direita para a esquerda para cima ou da esquerda para a direita para cima.
Escreva uma função que receba dois parâmetros:
- A grade retangular de letras maiúsculas.
- A palavra-alvo.
Sua função deve retornar uma tupla (count, grid), em que count é o número total de ocorrências da palavra-alvo e grid é a grade de entrada com cada ocorrência da palavra-alvo em letras minúsculas.
Exemplos
count_word([
["I", "W", "I", "S", "H"],
["Z", "H", "S", "I", "W"],
["R", "S", "A", "D", "I"],
["Z", "I", "R", "E", "S"],
["J", "W", "K", "F", "H"]
], "WISH") ➞ (4, [
["I", "w", "i", "s", "h"],
["Z", "h", "s", "i", "w"],
["R", "s", "A", "D", "i"],
["Z", "i", "R", "E", "s"],
["J", "w", "K", "F", "h"]
])
count_word([
["M", "I", "W", "S", "W", "I", "I", "M"],
["W", "M", "I", "W", "W", "S", "M", "I"],
["I", "S", "S", "I", "M", "I", "S", "W"],
["S", "W", "I", "M", "W", "M", "W", "S"],
["I", "I", "W", "M", "I", "W", "I", "S"],
["I", "M", "I", "S", "M", "S", "M", "W"],
["W", "W", "S", "M", "W", "I", "S", "I"],
["S", "I", "M", "M", "I", "W", "S", "M"]
], "SWIM") ➞ (9, [
["m", "i", "w", "s", "W", "I", "I", "m"],
["W", "M", "I", "w", "W", "S", "M", "i"],
["I", "s", "S", "i", "M", "I", "s", "w"],
["s", "w", "i", "m", "W", "M", "w", "s"],
["I", "i", "W", "m", "I", "W", "i", "s"],
["I", "m", "i", "S", "M", "S", "m", "w"],
["W", "w", "S", "M", "W", "I", "S", "i"],
["s", "I", "M", "m", "i", "w", "s", "m"]
])Observações
As diagonais podem ser quaisquer diagonais nas quais a palavra-alvo caiba, não apenas a diagonal principal. A palavra-alvo não será um palíndromo.