Tarefa 10 - Corretor

Prazo de entrega:
Segunda chance:
Esta tarefa tem peso 4.

Você deve conhecer e utilizar conceitos de hashing e hash table. Além disso, você deve utilizar tipos de dados primitivos e tipos de dados compostos, como strings.


Ana está prestes a defender o seu mestrado e está correndo contra o tempo para entregar a versão final de sua dissertação. Como ela tem virado a noite escrevendo e muitas vezes dormido mal, Anna acaba cometendo vários erros de digitação durante a escrita do texto.

Anne precisa da sua ajuda para corrigir os erros de digitação, que podem ser esquecer de digitar um caractere, inserir um caractere a mais, ou digitar um caractere trocado.

Sua tarefa é fazer um programa em C com nome corretor que, dada uma lista de palavras que correspondem a um dicionário, indica o nível de correção de cada palavra do texto. Os níveis são:

Entrada

A entrada é composta por várias linhas. A primeira linha contém dois inteiros $m$ e $n$ que indicam, respectivamente, o número de palavras no dicionário e o número de palavras do texto. Em seguida são dadas $m$ palavras que compõem o dicionário e $n$ linhas com as palavras que devem ser buscadas.

Você pode supor que $5 \le m \le 100$ e $3 \le n \le 100$. Além disso, suponha que todos os caracteres são minúsculos e que as palavras possuem no máximo 25 caracteres e não possuem acentos ou caracteres especiais.

5 3
algoritmos
demonstracao
linear
inteira
exato

algoritmoss
intiera
linear

Saída

A saída do seu programa deverá apresentar $n$ linhas indicando o nível de correção de cada palavra buscada, conforme o exemplo:

algoritmoss: amarelo
intiera: vermelho
linear: verde

Observe que a palavra intiera possui dois caracteres trocados, i por e e e por i.

Critérios

É obrigatório o uso de tabela de hashing para resolver esta tarefa eficientemente.