Il s'agit d'une variante de Jouer la chaîne de mots et Construire une longue chaîne de mots .
L'entrée est une liste non vide de mots uniques d'au moins 2 caractères composés de caractères en [az]. Vous devez afficher la longueur de la chaîne la plus longue possible, où chaque mot suivant commence par la dernière lettre du mot précédent. Vous pouvez commencer par n'importe quel mot de la liste.
Une autre tournure est que vous êtes autorisé à répéter n'importe quel mot de la liste. Cependant, vous ne pouvez pas répéter un bloc de deux mots. Par exemple,
cat->tac->cat
est autorisé, mais cat->tac->cat->tac
ne l'est pas, car vous avez répété un bloc de deux mots ( cat->tac
). De plus, vous ne pouvez pas utiliser le même mot deux fois de suite (par exemple eye->eye
).
Exemples:
cat dog tree egg
=> 3 (chat-> arbre-> œuf)new men ten whim
=> 5 (dix-> nouveau-> caprice-> hommes-> nouveau)truth fret heart his
=> 5 (frette-> vérité-> cœur-> vérité-> son)we were stew early yew easy
=> 9 (ragoût-> étaient-> tôt-> if-> étaient-> facile-> if-> nous-> facile)tac cat tac cot tac can
=> 6 (tac-> cat-> tac-> cot-> tac-> can)
(Faites-moi savoir si j'ai fait une erreur sur l'un de ces exemples ou si vous en trouvez plus.)
"cat dog tred xy yz zx"
retourne4
. Est-ce exact? N'est-ce pas3
?xy yz zx xy
est la chaîne la plus longue, donc 4.Haskell ,
131141 octetsFondamentalement, l'approche par force brute. L'idée est de générer toutes les pièces de dominos possibles , de les permuter, de vérifier si c'est un combo valide et de maximiser le tout. La complexité temporelle est ridicule, le 4ème cas de test prend déjà ~ 4s sur mon PC et sur le TIO ça ne semble pas fonctionner!
Essayez-le en ligne!
Non golfé
Edit : changé de Lambdabot en Haskell nu mais économisé quelques octets en le jouant au golf, de sorte qu'il est toujours inférieur à
145
octets :)la source