Skip to content

Instantly share code, notes, and snippets.

@DavidGoussev
Last active May 27, 2016 00:08
Show Gist options
  • Select an option

  • Save DavidGoussev/4e1ec8cf76b495a1c335598b62631cb7 to your computer and use it in GitHub Desktop.

Select an option

Save DavidGoussev/4e1ec8cf76b495a1c335598b62631cb7 to your computer and use it in GitHub Desktop.
# Word Correction Take-Home
Write a program in JavaScript that reads a large list of English words (e.g. from /usr/share/dict/words on a unix system) into memory, and then reads words from stdin, and prints either the best spelling correction, or "NO CORRECTION" if no suitable correction can be found.
The program should print "> " as a prompt before reading each word, and should loop until killed.
For example:
$node ./spellcorrecter.js
> sheeeeep
sheep
> CUNsperrICY
conspiracy
> sheeple
NO CORRECTION
The class of spelling mistakes to be corrected is as follows:
1. Case (upper/lower) errors `inSIDE -> inside`
2. Repeated letters `jjoobbb -> job`
3. Incorrect vowels `weke -> wake`
4. Any combination of the above types of errors `CUNsperrICY -> conspiracy`
Your solution should be faster than O(n) per word checked, where n is the length of the dictionary. That is to say, you cant scan the dictionary every time you want to spellcheck a word.
If there are many possible corrections of an input word, your program can choose one in any way you like, however your results *must* match the examples above (e.g. "sheeeeep" should return "sheep" and not "shap").
## Incorrect Word Generator
Write a second program that generates words with spelling mistakes of the above form, starting with correctly spelled English words. Pipe its output into the first program and verify that there are no occurrences of "NO CORRECTION" in the output
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment