private List <int> GetPossibleNumbers(List <Digit> digits) { var result = new List <int> { 0 }; foreach (var digit in digits) { List <int> possibleDigits = _digitEngine.GetPossibleDigits(digit); var newResult = new List <int>(); foreach (var number in result) { foreach (var possibleDigit in possibleDigits) { newResult.Add(number * 10 + possibleDigit); } } result = newResult; } return(result); }