Soundex: 2rd: small refactoring
Soundex: 3rd: #4 fills in zeros until there are three numbers
Soundex: 4th: refactoring: add a new method and a test fixture
Soundex: 5th: refactoring: split the file and make the tests shorter
Soundex: 6th: #2: replace consonants with digits after the first letter
Soundex: 7th: refactor to a more declarative solution
Soundex: 8th: refactor to eliminate the hard code
Soundex: 9th: #2 need to handle more cases
Soundex: 10th: What if the letter doesn't appear in the lookup map?
Soundex: 11st: disable the test and refactor
Soundex: 12nd: pass the test ReplaceMultipleConsonantsWithDigits
Soundex: 13rd: pass the test LimitsLengthtoFourCharacters
Soundex: 14th: pass the test CombinesDuplicateEncodings
Soundex: 15th: pass the test UppercaseFirstLetter
Soundex: 16th: refactor to make the code more explicit
Soundex: 17th: pass the test IgnoreCaseWhenEncodingConsonants
Soundex: 18th: pass the test CombinesDuplicateCodesWhen2ndLetterDuplicates1st
Soundex: 19th: refactor the method encodedDigits
Soundex: 20th: pass the test DoesNotCombineDuplicateEncodingsSeparatedByVowels