| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Prolog > Преобразование строки с координатами в таблицу |
| Автор: temnenkaja 1.4.2009, 19:44 |
| Программа выполняет поиск расположения ладей, при котором ни одна не бьет другую Результатом является список пар координат месторасположения на доске, но его надо преобразовать в таблицу, которая представляет собой доску, т.е. места, где отсутствует фигура обозначаются как "_", где есть "Х". Помогите выполнить преобразование: DOMAINS intlist=integer* castlelist=castle* castle=c (integer,integer) PREDICATES solution (castlelist, intlist) notbeat (castle, castlelist) belongs (integer, intlist). template2 (castlelist) template3 (castlelist) template4 (castlelist) template5 (castlelist) template6 (castlelist) template7 (castlelist) template8 (castlelist) genlist (integer, integer, intlist, intlist) select (integer, castlelist) start CLAUSES solution ([ ], Reslist). solution ([c (X,Y)|Rest],Reslist):- solution (Rest,Reslist), belongs (Y, Reslist) , notbeat (c (X,Y),Rest). notbeat (_,[ ]):-!. notbeat (c (X,Y), [c (X1,Y1)|Rest]):- Y<>Y1, notbeat (c (X,Y), Rest). belongs (X, [X|L]). belongs (X, [Y|L]):- belongs (X,L). template2 ([c (1,Y1),c (2,Y2)]). template3 ([c (1,Y1),c (2,Y2),c (3,Y3)]). template4 ([c (1,Y1),c (2,Y2),c (3,Y3),c (4,Y4)]). template5 ([c (1,Y1),c (2,Y2),c (3,Y3),c (4,Y4),c (5,Y5)]). template6 ([c (1,Y1),c (2,Y2),c (3,Y3),c (4,Y4),c (5,Y5),c (6,Y6)]). template7 ([c (1,Y1),c (2,Y2),c (3,Y3),c (4,Y4),c (5,Y5),c (6,Y6),c (7,Y7)]). template8 ([c (1,Y1),c (2,Y2),c (3,Y3),c (4,Y4),c (5,Y5),c (6,Y6),c (7,Y7),c (8,Y8)]). select(FS, X):- FS=2, template2(X); FS=3, template3(X); FS=4, template4(X); FS=5, template5(X); FS=6, template6(X); FS=7, template7(X); FS=8, template8(X),exit(0). genlist (FS, 0, Reslist, Reslist):-!. genlist(FS, N, Tmplist, Reslist):- Tmp2list=[N|Tmplist], N2=N-1, genlist(FS, N2, Tmp2list, Reslist). start:-write ("Write N (from 2 to 8), N="),readint(N),nl,genlist(1, N, [],Reslist),select (N, X), solution(X,Reslist),nl,write (X),fail, nl. start. |