- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgram.cs
More file actions
Latest commit
47 lines (41 loc) · 1.25 KB
/
Copy pathProgram.cs
File metadata and controls
47 lines (41 loc) · 1.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
namespaceIntegerAllocation
{
classProgram
{
publicstaticvoidMain(string[]args)
{
vara=newVariable("a");
varb=newVariable("b");
varc=newVariable("c");
vard=newVariable("d");
varinput=newBag(
new[]
{
newSum(new[]{a,b},"sum1"),
newSum(new[]{b,c},"sum2"),
newSum(new[]{c,d},"sum3"),
newSum(new[]{a,a,d},"sum4"),
newSum(new[]{b},"sum5"),
}
);
varallVars=new[]{a,b,c,d};
varorderedSolutions=Permutation.GetAll(allVars)
.Select(orderedVars =>newOrderedAlgorithm(orderedVars,input).Calculate())
.ToArray();
varminimalSolution=orderedSolutions
.Select(_ =>new{Solution=_,MaxSum=_.Item2.Sums.Max(sum =>sum.CalculatedValue)})
.OrderBy(_ =>_.MaxSum)
.First();
PrintSolution(minimalSolution.Solution,minimalSolution.MaxSum);
}
privatestaticvoidPrintSolution(Tuple<ICollection<VariableWithValue>,Bag>minimalSolution,intmaxSum)
{
Console.WriteLine(string.Join(", ",minimalSolution.Item1.Select(_ =>_.ToString())));
Console.WriteLine(minimalSolution.Item2.ToString());
Console.WriteLine("max={0}",maxSum);
}
}
}