public TheNumber(string value) { List <string> values = new List <string>(); for (int k = 0; k < value.Length; k++) { string startNumber = value[k].ToString(); List <int> numbers = new List <int>(); for (int i = 0; i < k; i++) { numbers.Add(int.Parse(value[i].ToString())); } for (int i = k; i < value.Length; i++) { SingleNumber number = new SingleNumber(); foreach (int n in numbers) { number.Numbers.Add(n); } number.Numbers.Add(int.Parse($"{startNumber}{value.Substring(k + 1, i - k)}")); for (int j = i + 1; j < value.Length; j++) { number.Numbers.Add(int.Parse(value[j].ToString())); } if (!values.Contains(number.ToString())) { this.Pairs.Add(number); values.Add(number.ToString()); } } } Pairs = Pairs.Distinct().ToList(); }
public void Run() { TheNumber theNumber = new TheNumber(N.ToString()); for (int i = 2; i < 10; i++) { SingleNumber value = theNumber.Pairs.OrderBy(x => x.Numbers.Count).FirstOrDefault(x => x.IsValid(i)); Console.Error.WriteLine(value); Console.Error.WriteLine(string.Empty); Console.Error.WriteLine(string.Empty); } }