START   ENDE  PROLOG  CLP   ECLiPSe  SUCHE   FALLBEISPIEL   ZURÜCK  

Fallbeispiel Damenproblem

Ein ECLiPSe Programm zur Lösung

queens(N) :-
	length(Board,N),
	Board :: 1..N,
	( fromto (Board, [Q1|Cols], Cols, []) do
		( foreach(Q2, Cols), count(Dist,1,_), param(Q1) do
			noattack(Q1, Q2, Dist)
		)
	), labeling(Board).

noattack(Q1,Q2,Dist) :-
	Q1      ## Q2,
	Q1 - Q2 ## Dist,
	Q2 - Q1 ## Dist.
	
labeling(AllVars) :-
		( foreach(Var,AllVars) do 
			indomain(Var)
                ).