Dies ist eine Variante von Spielen Sie die Wortkette und bauen Sie eine lange Wortkette auf .
Die Eingabe ist eine nicht leere Liste eindeutiger Wörter, die mindestens 2 Zeichen lang sind und aus Zeichen in [az] bestehen. Sie müssen die Länge der längsten möglichen Kette ausgeben, wobei jedes nachfolgende Wort mit dem letzten Buchstaben des vorherigen Wortes beginnt. Sie können mit jedem Wort in der Liste beginnen.
Eine weitere Wendung ist, dass Sie jedes einzelne Wort auf der Liste wiederholen dürfen. Sie können jedoch keinen Zwei-Wort-Block wiederholen. Zum Beispiel
cat->tac->cat
ist erlaubt, aber cat->tac->cat->tac
nicht, weil Sie einen Zwei-Wort-Block ( cat->tac
) wiederholt haben . Sie können dasselbe Wort auch nicht zweimal hintereinander verwenden (z eye->eye
. B. ).
Beispiele:
cat dog tree egg
=> 3 (Katze-> Baum-> Ei)new men ten whim
=> 5 (zehn-> neu-> Laune-> Männer-> neu)truth fret heart his
=> 5 (Bund-> Wahrheit-> Herz-> Wahrheit-> sein)we were stew early yew easy
=> 9 (Eintopf-> waren-> früh-> Eibe-> waren-> leicht-> Eibe-> wir-> leicht)tac cat tac cot tac can
=> 6 (tac-> cat-> tac-> cot-> tac-> can)
(Lassen Sie mich wissen, ob ich bei einem dieser Beispiele einen Fehler gemacht habe oder ob Sie sich mehr einfallen lassen.)
"cat dog tred xy yz zx"
kehrt zurück4
. Ist das korrekt? Sollte es nicht sein3
?xy yz zx xy
ist die längste Kette, also 4.Haskell ,
131141 BytesGrundsätzlich der Brute-Force-Ansatz. Die Idee ist, alle möglichen Dominostücke zu generieren , sie zu permutieren, zu überprüfen, ob es sich um eine gültige Kombination handelt, und das Ganze zu maximieren. Die zeitliche Komplexität ist lächerlich, der 4. Testfall dauert auf meinem PC bereits ~ 4s und auf dem TIO scheint es nicht zu funktionieren!
Probieren Sie es online aus!
Ungolfed
Bearbeiten : Von Lambdabot zu Bare Haskell geändert, aber durch Golfen ein paar Bytes gespart, so dass es immer noch weniger als
145
Bytes sind :)quelle