pengantar
Sebuah pohon radix , juga dikenal sebagai trie dikompresi atau pohon awalan dikompresi, adalah struktur data seperti pohon untuk menyimpan satu set string. Ujung-ujung pohon diberi label oleh string yang tidak kosong, dan setiap node adalah terminal atau non-terminal. String yang berisi pohon persis label semua jalur dari root ke terminal node. Pohon harus dalam bentuk normal yang ditentukan oleh kondisi berikut:
- Semua node non-root nonterminal memiliki setidaknya dua anak.
- Untuk setiap node, semua tepi keluar memiliki karakter pertama yang berbeda.
Sebagai contoh, di sini adalah pohon radix yang berisi set ["test", "testing", "tested", "team", "teams", "technical", "sick", "silly"]
, dengan (N)
mewakili simpul nonterminal dan (T)
terminal simpul:
-(N)-te-(N)-st-(T)-ing-(T)
| | |
| | +-ed-(T)
| |
| +-am-(T)-s-(T)
| |
| +-chnical-(T)
|
+-si-(N)-ck-(T)
|
+-lly-(T)
Dalam tantangan ini, tugas Anda adalah menghitung ketinggian pohon, mengingat string sebagai input.
Memasukkan
Input Anda adalah daftar string surat ASCII huruf kecil yang tidak kosong. Itu tidak akan berisi duplikat, tetapi mungkin dalam urutan apa pun. Mungkin berisi string kosong. Anda dapat mengambil input dalam format apa pun yang masuk akal.
Keluaran
Output Anda akan menjadi panjang jalur root-to-leaf terpanjang di pohon radix yang sesuai, diukur dalam jumlah node yang dikandungnya.
Dalam contoh di atas, output yang benar adalah 4, sesuai dengan jalur
(N)-te-(N)-st-(T)-ing-(T)
(N)-te-(N)-st-(T)-ed-(T)
(N)-te-(N)-am-(T)-s-(T)
yang berisi 4 node.
Contoh lebih lanjut
Berikut adalah beberapa contoh pohon radix:
[""]
-(T)
["","fuller"]
-(T)-fuller-(T)
["","full","fuller"]
-(T)-full-(T)-er-(T)
["full","fuller"]
-(N)-full-(T)-er-(T)
["full","filler"]
-(N)-f-(N)-ull-(T)
|
+-iller-(T)
Aturan dan penilaian
Anda dapat menulis program atau fungsi lengkap. Ini adalah kode golf, sehingga jumlah byte terendah menang.
Anda dapat menggunakan built-in atau pustaka yang Anda inginkan, tetapi ingat untuk memasukkan semua import
dll di dalam jumlah byte Anda. Pustaka pihak ketiga - yang tidak termasuk dalam pemasangan standar bahasa Anda - diizinkan, tetapi harus dicantumkan dalam header secara terpisah, misalnya Python + pytrie0.2, 60 byte .
Uji kasus
[""] -> 1
["fuller"] -> 2
["","fuller"] -> 2
["","full","fuller"] -> 3
["full","fuller"] -> 3
["full","filler"] -> 3
["full","filler","filter"] -> 4
["full","filler","fi","filter"] -> 5
["test","testing","tested","team","teams","technical","sick","silly"] -> 4
["a","aaaa","aabbaa","aabbaab","abaaa","aab","aabbb","aabba"] -> 8
["dbdbaca","ab","a","caaabaaa","adbbabdb","dbdbdbaca","dbbadbacaba","db"] -> 4
["db","dbbdbb","dbaa","cabcacaa","","acaabcacab","b","abaaaca","bacaaaaa"] -> 3
["aabaabdbb","bacaabadbbdb","abb","aabaa","ab","bcadbb","adbbcaaadbbb","caaa","bbdbcacadbab","dbbdbdb"] -> 4
["bbcaaabbbabbcadbbacadbbdbdb","b","bbbbaaaaaababa","ca","bb","bdbbacadbbdbbdbbababaacaca","abbaabbabcabaaa","bbbacacacabcacacabaaabb","bbcaaaab","bbbbcaacaadbcaaa","babbabcadbdbacacabbcacab","abcabbbaacadbcadb","bbcabbcadbcacaacaadbadbcaadb","dbbbdbbdbacaabbacabcadbdbacaca","bbaabdbdb","cabcadbbbadbadbbaadbcaca","adbadbadbdbcacadbdbbcaadbcaca","abaabbcab","aaabcaabcaab","bacacabcacaacadbadbb"] -> 6