En voici un pour tous les forgerons de mots! Écrivez un programme ou une fonction qui prend une liste de mots et produit une liste de toutes les décompositions concaténatives possibles pour chaque mot. Par exemple:
(Remarque: Il ne s'agit que d'un petit échantillonnage à des fins d'illustration. La production réelle est beaucoup plus volumineuse.)
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, vous avez l'idée. :-)
Règles
- Utilisez n'importe quel langage de programmation de votre choix. Le code le plus court par nombre de caractères pour chaque langue gagne. Cela signifie qu'il y a un gagnant pour chaque langue utilisée. Le gagnant général sera simplement le code le plus court de tous les soumissions.
- La liste d'entrée peut être un fichier texte, une entrée standard ou toute structure de liste fournie par votre langue (liste, tableau, dictionnaire, ensemble, etc.). Les mots peuvent être l'anglais ou toute autre langue naturelle. (Si la liste contient des mots anglais, vous voudrez ignorer ou pré-filtrer les éléments à une seule lettre, sauf pour "a" et "i". De même, pour les autres langues, vous voudrez ignorer les éléments absurdes s'ils apparaissent dans le fichier.)
- La liste de sortie peut être un fichier texte, une sortie standard ou toute structure de liste utilisée par votre langue.
- Vous pouvez utiliser n'importe quel dictionnaire d'entrée que vous aimez, mais vous voudrez probablement en utiliser un qui fournit des mots sensés plutôt qu'un dictionnaire qui fournit trop de mots obscurs, obscurs ou obnubilés. Voici le fichier que j'ai utilisé: la liste Corncob de plus de 58000 mots anglais
Des questions
Ce défi consiste principalement à écrire le code pour accomplir la tâche, mais c'est aussi amusant de parcourir les résultats ...
- Quels sous-mots apparaissent le plus souvent?
- Quel mot peut être décomposé en le plus grand nombre de sous-mots?
- Quel mot peut être décomposé de différentes manières?
- Quels mots sont composés des plus grands sous-mots?
- Quelles décompositions avez-vous trouvées les plus amusantes?
alienation
quand j'ai coupé et collé ça. Fixé maintenant. Pour les autres, la liste ci-dessus n'est qu'un petit échantillon. Mon programme de test a généré des dizaines de milliers de réponses lorsqu'il a reçu la liste Corncob.