Jest to wariant gry Łańcuch słów i Budowanie długiego łańcucha słów .
Dane wejściowe to niepusta lista unikatowych słów o długości co najmniej 2 znaków w [az]. Musisz podać długość najdłuższego możliwego łańcucha, w którym każde następne słowo zaczyna się od ostatniej litery poprzedniego słowa. Możesz zacząć od dowolnego słowa z listy.
Kolejnym akcentem jest to, że możesz powtarzać dowolne słowo na liście. Nie można jednak powtórzyć żadnego bloku dwóch słów. Na przykład
cat->tac->cat
jest dozwolone, ale cat->tac->cat->tac
nie jest, ponieważ powtórzyłeś blok słów ( cat->tac
). Nie można także używać tego samego słowa dwa razy z rzędu (np eye->eye
.).
Przykłady:
cat dog tree egg
=> 3 (kot-> drzewo-> jajko)new men ten whim
=> 5 (dziesięć-> nowy-> kaprys-> mężczyźni-> nowy)truth fret heart his
=> 5 (fret-> prawda-> serce-> prawda-> jego)we were stew early yew easy
=> 9 (gulasz-> były-> wcześnie-> cis-> były-> łatwe-> cis-> my-> łatwe)tac cat tac cot tac can
=> 6 (tac-> cat-> tac-> łóżeczko-> tac-> puszka)
(Daj mi znać, jeśli popełniłem błąd w którymkolwiek z tych przykładów lub jeśli wymyślisz więcej).
"cat dog tred xy yz zx"
zwraca4
. Czy to jest poprawne? Nie powinno tak być3
?xy yz zx xy
jest najdłuższym łańcuchem, więc 4.Haskell ,
131141 bajtówZasadniczo podejście brutalnej siły. Chodzi o to, aby wygenerować wszystkie możliwe elementy domina , permutować je, sprawdzić, czy jest to poprawna kombinacja i zmaksymalizować całość. Złożoność czasu jest absurdalna, czwarty przypadek testowy zajmuje już ~ 4 s na moim komputerze, a na TIO nie działa!
Wypróbuj online!
Nie golfił
Edycja : Zmieniono z Lambdabot na czysty Haskell, ale zaoszczędzono kilka bajtów, grając w golfa, tak że wciąż jest mniej niż
145
bajtów :)źródło