Anagrama

Anagrama

Médio

Introdução

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.

Instruções

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".

Formato de entrada/saída

A função recebe uma única string de palavras, cada uma terminada com uma quebra de linha.

A primeira é a palavra da qual as demais devem ser anagramas.

Retorne uma string com todos os anagramas válidos, cada um terminado com uma quebra de linha.

Endereços reservados

O buffer da string de entrada usa os bytes 64-319 da memória linear.

Você pode modificar esse buffer no próprio lugar, caso queira evitar alocações de memória adicionais.

Editar via GitHub O link abre em uma nova janela ou aba
WebAssembly Exercism

Tudo pronto para começar Anagrama?

Crie sua conta no Exercism para aprender e dominar WebAssembly com 87 exercícios e mentoria humana de verdade, tudo de graça.