/**
* Created by jsonmartin on 6/27/16.
*/
"use strict";
function digitsToNumbers(inputStr) {
if(!inputStr) return []; // Edge case handling, catches for empty inputStr
const digitMaps = {
'2': ['A', 'B', 'C'],
'3': ['D', 'E', 'F'],
'4': ['G', 'H', 'I'],
'5': ['J', 'K', 'L'],
'6': ['M', 'N', 'O'],
'7': ['P', 'Q', 'R', 'S'],
'8': ['T', 'U', 'V'],
'9': ['W', 'X', 'Y', 'Z']
};
let results = [];
let possibilityArray = inputStr.split('').map((n) => digitMaps[n]);
let mapDigits = (current, remaining) => {
if (remaining.length === 1) {
let letters = remaining[0];
letters.forEach((letter) => results.push(current + letter));
return;
}
remaining[0].forEach((letter) => mapDigits(current + letter, remaining.slice(1)));
};
mapDigits("", possibilityArray);
return results;
}
/**
* TESTS
*/
let result;
//result = digitsToNumbers("2"); // => ['A', 'B', 'C']
result = digitsToNumbers("23"); // => ['AD', 'AE', 'AF', 'BD', 'BE', 'BF', 'CD', 'CE', 'CF']
//result = digitsToNumbers("234");
//result = digitsToNumbers("999");
console.log(result);