#!/usr/bin/env python3
-from typing import Any, Sequence
+"""This is a Trie class, see: https://en.wikipedia.org/wiki/Trie.
+
+ It attempts to follow Pythonic container patterns. See doctests
+ for examples."""
+
+from typing import Any, Generator, Sequence
class Trie(object):
self.end = "~END~"
self.length = 0
self.viz = ''
+ self.content_generator: Generator[str] = None
def insert(self, item: Sequence[Any]):
"""
self,
padding: str,
pointer: str,
- parent: str,
node: Any,
has_sibling: bool,
):
if node is None:
- return
+ return ''
if node is not self.root:
ret = f'\n{padding}{pointer}'
if has_sibling:
has_sibling = False
pointer += f'{child}'
child_count -= 1
- ret += self.repr_fancy(padding, pointer, node, node[child], has_sibling)
+ ret += self.repr_fancy(padding, pointer, node[child], has_sibling)
return ret
def repr_brief(self, node, delimiter):
>>> t.insert([10, 10, 10, 1])
>>> t.insert([10, 10, 10, 2])
>>> t.repr_brief(t.root, '.')
- '10.[0.0.[1, 2], 10.10.[1, 2]]'
+ '10.[0.0.[1,2],10.10.[1,2]]'
"""
child_count = 0
child_count += 1
child_rep = self.repr_brief(node[child], delimiter)
if len(child_rep) > 0:
- my_rep += str(child) + delimiter + child_rep + ", "
+ my_rep += str(child) + delimiter + child_rep + ","
else:
- my_rep += str(child) + ", "
+ my_rep += str(child) + ","
if len(my_rep) > 1:
- my_rep = my_rep[:-2]
+ my_rep = my_rep[:-1]
if child_count > 1:
my_rep = f'[{my_rep}]'
return my_rep
└──2
"""
- return self.repr_fancy('', '*', self.root, self.root, False)
+ return self.repr_fancy('', '*', self.root, False)
if __name__ == '__main__':