29 lines
922 B
C#
29 lines
922 B
C#
using static System.Linq.Enumerable;
|
|
using static System.Console;
|
|
|
|
namespace N_Queens
|
|
{
|
|
static class Program
|
|
{
|
|
static void Main(string[] args)
|
|
{
|
|
var n = 8;
|
|
var domain = Range(0, n).ToArray();
|
|
|
|
var amb = new Amb.Amb();
|
|
var queens = domain.Select(_ => amb.Choose(domain)).ToArray();
|
|
amb.Require(() => n == queens.Select(q=> q.Value).Distinct().Count());
|
|
amb.Require(() => n == domain.Select(i=> i + queens[i].Value).Distinct().Count());
|
|
amb.Require(() => n == domain.Select(i=> i - queens[i].Value).Distinct().Count());
|
|
|
|
if (amb.Disambiguate())
|
|
{
|
|
WriteLine("Position is row, value is column:-");
|
|
WriteLine(string.Join(" ", queens.AsEnumerable()));
|
|
}
|
|
else
|
|
WriteLine("amb is angry");
|
|
Read();
|
|
}
|
|
}
|
|
}
|