Numa venda de garagem, você encontra uma linda máquina de escrever vintage por um preço de banana! Na empolgação, você corre para casa, coloca uma folha de papel e começa a digitar. Mas o ânimo passa quando você examina o resultado: todas as palavras saem embaralhadas! Por exemplo, ela imprime "stop" em vez de "post" e "least" em vez de "stale". Você tenta de novo, com cuidado, mas agora ela imprime "spot" e "slate". Depois de algumas tentativas, você descobre que há um atraso aleatório antes de cada letra ser impressa, o que bagunça a ordem. Agora você entende por que venderam a máquina por tão pouco dinheiro!
Você percebe que essa peculiaridade permite gerar anagramas, que são palavras formadas ao reorganizar as letras de outra palavra. Feliz com a descoberta, você passa o resto do dia gerando centenas de anagramas.
Dada uma palavra-alvo e uma ou mais palavras candidatas, sua tarefa é encontrar as candidatas que são anagramas da palavra-alvo.
Um anagrama é o rearranjo das letras para formar uma nova palavra: por exemplo, "owns" é um anagrama de "snow".
Uma palavra não é anagrama de si mesma: por exemplo, "stop" não é um anagrama de "stop".
A palavra-alvo e as palavras candidatas são formadas por um ou mais caracteres alfabéticos ASCII (A-Z e a-z).
Letras minúsculas e maiúsculas são equivalentes: por exemplo, "PoTS" é um anagrama de "sTOp", mas "StoP" não é um anagrama de "sTOp".
As palavras que você precisa encontrar devem ser tiradas das palavras candidatas, respeitando o uso de maiúsculas e minúsculas.
Dada a palavra-alvo "stone" e as palavras candidatas "stone", "tones", "banana", "tons", "notes" e "Seton", os anagramas que você precisa encontrar são "tones", "notes" e "Seton".
["stone","tones","banana","tons","notes","Seton"]
CREATE TABLE anagram (
subject TEXT NOT NULL,
candidates TEXT NOT NULL, -- json array of strings
result TEXT -- json array of strings
);
Crie sua conta no Exercism para aprender e dominar SQLite com 81 exercícios e mentoria humana de verdade, tudo de graça.