Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.142.173.227] |
|
Сообщ.
#1
,
|
|
|
Требуется запрограммировать поиск правильной расстановки 8 ферзей на шахматной доске, т.е. такой чтобы
эти ферзи не били друг друга. С помощью предиката uazirler (queens) 2-х аргументов, найти все правильные расстановки ферзей на шахматной доске размером , в которых на 3-ей вертикале ферзи стоят на нечетных, а в 4-ой вертикале на четных горизонталях. prolog 5.2 /*************UAZIRLER****************/ DOMAINS i=integer l=i* PREDICATES uazirler(l,i) uazirler(l,l,l) zheydy(i,l,i) member(i,l) delete(i,l,l) generate(i,i,l) CLAUSES % uazirler(List,Number) uazirler(T,N):- generate(1,N,U), uazirler(T,[],U). % uazirler(List,Sufix,Prefix ) uazirler(T,T,[]). uazirler(T,W,U0):- member(A,U0), not(zheydy(A,W,1)), delete(A,U0,U1), uazirler(T,[A|W],U1). zheydy(A,[B|W],R):- R=abs(A-B); R1=R+1, zheydy(A,W,R1). member(A,[A|U]). member(A,[_|U]):- member(A,U). delete(A,[A|U],U). delete(A,[B|U0],[B|U1]):- delete(A,U0,U1). generate (M,M,[M]). generate (N,M,[N|S]):- N<M, N1=N+1, generate (N1,M,S). |