Ini adalah varian dari Play the word chain dan Membangun rantai kata yang panjang .
Input adalah daftar kata-kata unik yang tidak kosong, minimal 2 karakter yang dibuat dari karakter dalam [az]. Anda perlu menampilkan panjang rantai terpanjang yang mungkin, di mana setiap kata berikutnya dimulai dengan huruf terakhir dari kata sebelumnya. Anda dapat mulai dengan kata apa saja pada daftar.
Pelintiran lain adalah Anda diizinkan mengulangi satu kata pun dalam daftar. Namun, Anda tidak dapat mengulangi blok dua kata apa pun. Misalnya,
cat->tac->cat
diizinkan, tetapi cat->tac->cat->tac
tidak, karena Anda mengulangi blok dua kata ( cat->tac
). Selain itu, Anda tidak dapat menggunakan kata yang sama dua kali berturut-turut (mis eye->eye
.).
Contoh:
cat dog tree egg
=> 3 (kucing-> pohon-> telur)new men ten whim
=> 5 (sepuluh-> baru-> kemauan-> men-> baru)truth fret heart his
=> 5 (fret-> kebenaran-> hati-> kebenaran-> miliknya)we were stew early yew easy
=> 9 (semur-> dulu-> awal-> yew-> tadi-> mudah-> yew-> kita-> mudah)tac cat tac cot tac can
=> 6 (tac-> cat-> tac-> cot-> tac-> can)
(Beri tahu saya jika saya membuat kesalahan pada salah satu contoh ini atau jika Anda menghasilkan lebih banyak.)
"cat dog tred xy yz zx"
kembali4
. Apakah itu benar? Bukankah seharusnya begitu3
?xy yz zx xy
adalah rantai terpanjang, jadi 4.Haskell ,
131141 bytePada dasarnya pendekatan brute force .. Idenya adalah untuk menghasilkan semua kemungkinan kartu domino , permute mereka, periksa apakah itu kombo yang valid dan maksimalkan semuanya. Kompleksitas waktu konyol, test case ke-4 sudah memakan waktu ~ 4s di PC saya dan pada TIO sepertinya tidak berfungsi!
Cobalah online!
Tidak disatukan
Sunting : Diubah dari Lambdabot untuk menelanjangi Haskell tetapi menyimpan beberapa byte dengan golf, sehingga itu masih kurang dari
145
byte :)sumber