Einführung
Ein Radix-Baum , auch als komprimierter Trie- oder komprimierter Präfixbaum bezeichnet, ist eine baumartige Datenstruktur zum Speichern einer Reihe von Zeichenfolgen. Die Kanten des Baums sind durch nicht leere Zeichenfolgen gekennzeichnet, und jeder Knoten ist entweder terminal oder nicht terminal. Die Zeichenfolgen, die der Baum enthält, sind genau die Beschriftungen aller Pfade vom Stamm zu einem Endknoten. Der Baum muss in der normalen Form vorliegen, die durch die folgenden Bedingungen definiert ist:
- Alle nicht terminalen Nicht-Wurzelknoten haben mindestens zwei Kinder.
- Für jeden Knoten haben alle ausgehenden Kanten unterschiedliche erste Zeichen.
Zum Beispiel ist hier der radix Baum den Satz enthält ["test", "testing", "tested", "team", "teams", "technical", "sick", "silly"]
, wobei (N)
die einen Nicht - Terminal - Knoten und (T)
einen Endknoten:
-(N)-te-(N)-st-(T)-ing-(T)
| | |
| | +-ed-(T)
| |
| +-am-(T)-s-(T)
| |
| +-chnical-(T)
|
+-si-(N)-ck-(T)
|
+-lly-(T)
Bei dieser Herausforderung besteht Ihre Aufgabe darin, die Höhe des Baums anhand der Zeichenfolgen als Eingabe zu berechnen.
Eingang
Ihre Eingabe ist eine nicht leere Liste von Zeichenfolgen aus ASCII-Kleinbuchstaben. Es enthält keine Duplikate, kann jedoch in beliebiger Reihenfolge vorliegen. Es kann die leere Zeichenfolge enthalten. Sie können die Eingabe in jedem vernünftigen Format vornehmen.
Ausgabe
Ihre Ausgabe ist die Länge des längsten Wurzel-Blatt-Pfades im entsprechenden Radix-Baum, gemessen in der Anzahl der darin enthaltenen Knoten.
Im obigen Beispiel ist die korrekte Ausgabe 4, entsprechend den Pfaden
(N)-te-(N)-st-(T)-ing-(T)
(N)-te-(N)-st-(T)-ed-(T)
(N)-te-(N)-am-(T)-s-(T)
die 4 Knoten enthalten.
Weitere Beispiele
Hier sind einige weitere Beispiele für Radixbäume:
[""]
-(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)
Regeln und Wertung
Sie können ein vollständiges Programm oder eine Funktion schreiben. Dies ist Code Golf, daher gewinnt die niedrigste Byteanzahl.
Sie können beliebige integrierte Funktionen oder Bibliotheken verwenden. Denken Sie jedoch daran, alle import
s usw. in Ihre Byteanzahl aufzunehmen. Bibliotheken von Drittanbietern - solche, die nicht in der Standardinstallation Ihrer Sprache enthalten sind - sind zulässig, müssen jedoch separat im Header aufgeführt werden, z. B. Python + pytrie0.2, 60 Byte .
Testfälle
[""] -> 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