8 Commits (e906a44d5a4b12cee32d625a98355d2adeef8e5e)

Author SHA1 Message Date
Eric Ihli 00ea29be44 Add children-at-depth function 4 years ago
Eric Ihli 9e025d8205 Add trie with integer keys for performance
Fix persisting trie to disk. Needed to be rewinding the byte
buffer befor writing.
4 years ago
Eric Ihli 2356df1095 Performance gains with type hints 4 years ago
Eric Ihli f57ea59c22 Lazier, faster, more memory-efficient seq
Custom print methods, remove unused zip code
4 years ago
Eric Ihli 2d684be874 Fix StackOverflow error on large inputs
Use non-lazy collections.
4 years ago
Eric Ihli fd191332cd Show root node in seq of Trie
Before, if you did a lookup in a trie and then did a seq of the result,
you would get all of the children of the node that you looked up, but
you wouldn't get the value of the node itself.

This was nice when I was only getting children of the root node
because the root node never had a value and I didn't want it.

But I think it makes more since to always include the root node.
If it's not wanted, filter it out at the application level.
4 years ago
Eric Ihli 77475e0c13 Redesign API, add tests, add example useage
- Add tests
- Refactor new version of Trie to be more coll-like
- Add an example use-case using a Markov chain to generate text
4 years ago
Eric Ihli 56be9e9898 Implement hash-map and byte-array tries
The hash-map trie is convenient to work with at the REPL since the
key/values are human readable and the backing data is traversible in a
fashion familiar to Clojure.

The byte-array backed trie has a slightly different API but is far more
memory efficient.

The paper that the tightly backed trie is based on can be viewed at
https://www.aclweb.org/anthology/W09-1505.pdf
4 years ago