using System.Collections.Generic;
public delegate int Operation(int x, int y);
public static Dictionary<Operators, Operation> Operations = new Dictionary<Operators, Operation>{
{Operators.Add, (x, y) => x + y},
{Operators.Subtract, (x, y) => x - y},
{Operators.Multiply, (x, y) => x * y},
{Operators.Divide, (x, y) => (int)(x / y)}
public static Random rand = new Random();
public static void Main()
var nums = Enumerable.Range(0, 8).Select(x => rand.Next(9)+1).ToList();
var target = rand.Next(10, 50);
Console.WriteLine(string.Join(", ", nums) + "\nTarget: " + target + "\n");
for(var i=0; i<nums.Count()-1; i++){
for(var j=i+1; j<nums.Count(); j++){
Console.WriteLine("\t" + nums[j]);
foreach(var item in Operations){
if(item.Value(nums[i], nums[j]) == target){
Console.WriteLine(string.Format(nums[i] + " " + nums[j] + ", " + item.Key));