Aqui está um para todos os que você ama por aí! Escreva um programa ou função que pegue uma lista de palavras e produza uma lista de todas as decomposições concatenativas possíveis para cada palavra. Por exemplo:
(Nota: esta é apenas uma pequena amostra para fins ilustrativos. A produção real é muito mais volumosa.)
afterglow = after + glow
afterglow = aft + erg + low
alienation = a + lie + nation
alienation = a + lien + at + i + on
alienation = a + lien + at + ion
alienation = alien + at + i + on
alienation = alien + at + ion
archer = arc + her
assassinate = ass + as + sin + ate
assassinate = ass + ass + in + ate
assassinate = assassin + ate
backpedalled = back + pedal + led
backpedalled = back + pedalled
backpedalled = backpedal + led
goatskin = go + at + skin
goatskin = goat + skin
goatskin = goats + kin
hospitable = ho + spit + able
temporally = tempo + rally
windowed = win + do + wed
windowed = wind + owed
weatherproof = we + at + her + pro + of
yeasty = ye + a + sty
Ok, você entendeu a ideia. :-)
Regras
- Use qualquer linguagem de programação de sua escolha. O código mais curto por contagem de caracteres para cada idioma vence. Isso significa que há um vencedor para cada idioma usado. O vencedor geral será simplesmente o código mais curto de todos os inscritos.
- A lista de entrada pode ser um arquivo de texto, entrada padrão ou qualquer estrutura de lista fornecida pelo seu idioma (lista, matriz, dicionário, conjunto, etc.). As palavras podem ser em inglês ou em qualquer outro idioma natural. (Se a lista for em inglês, convém ignorar ou pré-filtrar itens de uma letra, exceto "a" e "i". Da mesma forma, em outros idiomas, você deverá ignorar itens sem sentido, se eles aparecer no arquivo.)
- A lista de saída pode ser um arquivo de texto, saída padrão ou qualquer estrutura de lista usada pelo seu idioma.
- Você pode usar qualquer dicionário de entrada que desejar, mas provavelmente desejará usar um que forneça palavras sensíveis, em vez de um que forneça muitas palavras obscuras, misteriosas ou obnubiladas. Este é o arquivo que eu usei: A lista de sabugo de milho com mais de 58000 palavras em inglês
Questões
Esse desafio é principalmente sobre escrever o código para realizar a tarefa, mas também é divertido analisar os resultados ...
- Quais subpalavras ocorrem com mais frequência?
- Que palavra pode ser decomposta no maior número de subpalavras?
- Que palavra pode ser decomposta das maneiras mais diferentes?
- Quais palavras são compostas das maiores subpalavras?
- Que decomposições você achou mais divertidas?
alienation
quando recortei e colei. Corrigido agora. Em termos dos outros, a lista acima é apenas uma pequena amostra. Meu programa de teste gerou dezenas de milhares de respostas quando recebida a lista de sabugo de milho.