Skip to content

Instantly share code, notes, and snippets.

@lifebeyondfife
Created October 21, 2014 12:20
Show Gist options
  • Save lifebeyondfife/f73674e4a86a853e5db6 to your computer and use it in GitHub Desktop.
Save lifebeyondfife/f73674e4a86a853e5db6 to your computer and use it in GitHub Desktop.
Solving https://news.ycombinator.com/item?id=8486278 with the Decider constraint solver tool
using Decider.Csp.BaseTypes;
using Decider.Csp.Integer;
using System;
using System.Collections.Generic;
namespace Chickens
{
class Program
{
static void Main(string[] args)
{
var x1 = new VariableInteger("x1", 1, 9);
var x2 = new VariableInteger("x2", 1, 9);
var y1 = new VariableInteger("y1", 1, 15);
var y2 = new VariableInteger("y2", 1, 15);
var z1 = new VariableInteger("z1", 1, 25);
var z2 = new VariableInteger("z2", 1, 25);
var p1 = new VariableInteger("p1", 1, 500);
var p2 = new VariableInteger("p2", 1, 500);
var constraints = new List<ConstraintInteger>
{
new ConstraintInteger(p1 > p2),
new ConstraintInteger(x1 > y1),
new ConstraintInteger(y1 > z1),
new ConstraintInteger(x1 * p1 + x2 * p2 == 3500),
new ConstraintInteger(y1 * p1 + y2 * p2 == 3500),
new ConstraintInteger(z1 * p1 + z2 * p2 == 3500),
new ConstraintInteger(x1 + x2 == 10),
new ConstraintInteger(y1 + y2 == 16),
new ConstraintInteger(z1 + z2 == 26),
};
IState<int> state = new StateInteger(new[] { p1, p2, x1, x2, y1, y2, z1, z2 }, constraints);
StateOperationResult result;
state.StartSearch(out result);
if (result == StateOperationResult.Solved)
{
Console.WriteLine("x1:\t{0}", x1);
Console.WriteLine("x2:\t{0}", x2);
Console.WriteLine("y1:\t{0}", y1);
Console.WriteLine("y2:\t{0}", y2);
Console.WriteLine("z1:\t{0}", z1);
Console.WriteLine("z2:\t{0}", z2);
Console.WriteLine();
Console.WriteLine("p1:\t{0}", p1);
Console.WriteLine("p2:\t{0}", p2);
}
Console.WriteLine("Done.");
Console.ReadKey();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment