[Turn on line numbering]arg trie, key; var n, t1; if (trie[1] && key == trie[1][1]) { trie = trie.replace(1, 0); if (trie.length() == 3 && !trie[3][2]) trie = [trie[3][1].replace(1, trie[2] + trie[3][1][1]), ""]; return trie; } if (!key) throw(~ambig, "Trie: Can't delete more than one key."); if (!(n = key[1] in trie[2])) throw(~keynf, "Trie: No such key."); t1 = (> ._del(trie[n + 2], key.subrange(2)) <); if (t1 == [0, ""]) trie = trie.delete(n + 2).replace(2, trie[2].subrange(1, n - 1) + trie[2].subrange(n + 1)); else trie = trie.replace(n + 2, t1); if (trie.length() == 3 && !trie[1] && !trie[3][2]) trie = [trie[3][1].replace(1, trie[2] + trie[3][1][1]), ""]; return trie;
// Miroslav Silovic
// Created 10-May-1995 as a part of ColdCore, see: @help Credit