add purely functional Trie
This commit is contained in:
parent
c3dc16b328
commit
c27c7d3648
2 changed files with 193 additions and 0 deletions
32
tests/trie.js
Normal file
32
tests/trie.js
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
import { pretty } from "../lib/util/pretty.js";
|
||||
import { insert, emptyTrie, growKey, suggest } from "../lib/util/trie.js";
|
||||
|
||||
// insertion
|
||||
const with1Item = insert(emptyTrie)('abba')('dancing queen');
|
||||
console.log(pretty(with1Item));
|
||||
const with2Items = insert(with1Item)('aboriginal')('australia');
|
||||
console.log(pretty(with2Items));
|
||||
const with3Items = insert(with2Items)('food')('pizza');
|
||||
console.log(pretty(with3Items));
|
||||
const with4Items = insert(with3Items)('absent')('not here');
|
||||
console.log(pretty(with4Items));
|
||||
const with5Items = insert(with4Items)('000')('000');
|
||||
console.log(pretty(with5Items));
|
||||
const with6Items = insert(with5Items)('aboriginally')('??');
|
||||
console.log(pretty(with6Items));
|
||||
const with7Items = insert(with6Items)('ab')('yup');
|
||||
console.log(pretty(with7Items));
|
||||
const with8Items = insert(with7Items)('')('hi!');
|
||||
console.log(pretty(with8Items));
|
||||
|
||||
// grow key (for auto-complete)
|
||||
console.log(growKey(with6Items)("a")); // b
|
||||
console.log(growKey(with6Items)("ab")); // (empty string)
|
||||
console.log(growKey(with6Items)("abb")); // a
|
||||
console.log(growKey(with6Items)("f")); // ood
|
||||
console.log(growKey(with6Items)("abo")); // riginal
|
||||
|
||||
// suggest (also for auto-complete)
|
||||
console.log(suggest(with8Items)("a")(3)); // 'ab', 'abba', 'aboriginal'
|
||||
console.log(suggest(with8Items)("a")(4)); // 'ab', 'abba', 'aboriginal', 'aboriginally'
|
||||
console.log(suggest(with8Items)("a")(5)); // 'ab', 'abba', 'aboriginal', 'aboriginally', 'absent'
|
||||
Loading…
Add table
Add a link
Reference in a new issue