HELLO ! i have question. having next things: 3:28 2:42 3:16 4:02 then i should somehow make a value of 10:46 of them, but i can only use one number for one time. So no 2:42+2:42.. but this: 3:28+3:16+4:02=10:46 I dont understand algortihm for this, could anyone explain ? or how bruteforce way =\? -----------------Unfinished example #1------------------------ public static string FunctionAlgorithm(string number) { bool split = false; string output = ""; List numbers = new List(); if ((split = number.Contains(":"))) { string[] n = number.Split(new char[] { ':' }); for (int i = 0; i < n.Length; i++) numbers.Add(Int32.Parse(n[i])); } else { try { numbers.Add(Int32.Parse(number)); } catch { return "error"; } } int random_num = 0; int wantednumber = (numbers.Count > 1) ? numbers[1] : numbers[0]; int current = 0; List n1 = new List(); List finals = new List(); while( current <= wantednumber ) { random_num = (new Random(new Random(new Random().Next()).Next())).Next(1, wantednumber + 1); if (random_num + current <= wantednumber && random_num != 0) { //n1.Add(current); n1.Add(random_num); current += random_num; Console.WriteLine(current+"+"+random_num); } if (current >= wantednumber) break; } if (split) { wantednumber = numbers[0]; current = 0; bool b = false; while (current <= wantednumber) { random_num = (new Random(new Random(new Random().Next()).Next())).Next(1, wantednumber + 1); if (random_num + current <= wantednumber && random_num != 0) { for (int i = 0; i < n1.Count; i++) { if (!finals.Contains((random_num + current) + ":" + n1[i])) { finals.Add((random_num + current) + ":" + n1[i]); Console.WriteLine(current + "+" + random_num + " = " + (random_num + current) + ":" + n1[i]); current += random_num; b = true; break; } if (b) { b = false; break; } } } } } else { for(int i = 0; i < n1.Count; i++) finals.Add(n1[i].ToString()); } for (int i = 0; i < finals.Count; i++) { if (i < finals.Count - 1) output += finals[i] + " + "; else output += finals[i] + " = " + number; } return output; }