Message from JavaScript discussions
May 2017
— "Hello" is 5 characters, and "Help" is 4. Therefore if traversing to "Hello" and searching for "Help" in the set, you can deduce from "Hello"'s metadata that a word after it shares 2 characters, and thus you know the probability of the next word being "Help" is 2/4. If that number is any lower than the sum of the shared characters and the characters of the input string, you know 100% that the next word, and all words after it, will definitely not match the input string
Thus you can abandon that portion of the tree completely, eliminating however many words are related to 'Hello'
— Wait... should we perhaps lookup by length first?
— Since 'Hello" shares so many characters with "Help", 3/4, your deduction here will be spot-on until you get to the point where you have not constructively proven "Help" is not in the set as you have not seen the entire set, but you have posited a contradictory proof which states the number of possible matching characters is zero, and thus aids in the proof that "Help" is not in the set
— ["Hometown" (Next shares 3 chars)] -> ["Howdy" (No next word sharing any chars)]
— > "😂😂😂".split('').map(x => x.charCodeAt())
[ 55357, 56834, 55357, 56834, 55357, 56834 ]
— That's the kind of information in the linked list you would have to make these deductions
— Not sure how big typed arrays we would need
— Perfect
— What's the biggest value a single JS character can have?
— I was thinking it would help this as well
— Byte value or length of string?