Facebook Interview Question

by Vikram Deshmukh

JavaScript

/*
mapping = {
	'1': ['A', 'B', 'C'],
	'2': ['D', 'E', 'F'],
	..
	'0': ['X', 'Y', 'Z']
}

Input String = '12'
Output String = ['AD', 'AE', 'AF', 'BD', 'BE', 'BF', 'CD', 'CE', 'CF']
*/
var map = {
 '1': ['A', 'B', 'C'],
 '2': ['D', 'E', 'F'],
 '0': ['X', 'Y', 'Z']
};
function getCombinations(N) {
	var arr = N.split("");
  var output = [];
  while(arr.length) {
  	output = generate(output, map[arr.shift()])
  }
  return output;
}
function generate(current, map) {
	if(!current.length) return map;
	var output = [];
	for(var i = 0; i < current.length; i++) {
  	for(var j = 0; j < map.length; j++) {
      output.push(current[i]+map[j]);
    }
  }
	return output;
}

console.log(getCombinations("0"));
console.log(getCombinations("12"));
console.log(getCombinations("012"));