Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Descobrir quais palavras um conjunto de letras pode criar?


Ignorando, por enquanto, a parte SQL do problema, o algoritmo que eu usaria é bastante simples:comece pegando cada palavra em seu dicionário e produzindo uma versão dela com as letras em ordem ordenada, junto com um ponteiro de volta para a versão original dessa palavra.

Isso daria uma tabela com entradas como:
sorted_text word_id
act         123    /* we'll assume `act` was word number 123 in the original list */
act         321    /* we'll assume 'cat' was word number 321 in the original list */

Então, quando recebemos uma entrada (digamos, "tac"), classificamos suas letras, procuramos em nossa tabela de letras classificadas unidas à tabela de palavras originais, e isso nos dá uma lista das palavras que podem ser criadas a partir essa entrada.

Se eu estivesse fazendo isso, eu teria as tabelas para isso em um banco de dados SQL, mas provavelmente usaria outra coisa para pré-processar a lista de palavras no formulário classificado. Da mesma forma, eu provavelmente deixaria a classificação das letras da entrada do usuário para qualquer coisa que eu estivesse usando para criar o front-end, então o SQL seria deixado para fazer o que é bom:gerenciamento de banco de dados relacional.