Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2009, 21:14   #1
supernolya@yandex.
Новичок
Джуниор
 
Регистрация: 03.04.2009
Сообщений: 2
По умолчанию Раскраска карты на турбо прологе

Ребят! Нужно решить задачку на турбо прологе. Если есть пару минут свободного времени помогите, пожалуйста. Смысл такой. В диалоге вводятся страны, и кто из этих стран соседи. Вывестись должно минимальное количество цветов для расскраски этой карты.
supernolya@yandex. вне форума Ответить с цитированием
Старый 03.04.2009, 21:34   #2
Veselyn
Форумчанин
 
Аватар для Veselyn
 
Регистрация: 29.01.2009
Сообщений: 175
По умолчанию

А где брать карту?
Все люди делятся на 10 типов: те, кто понимают двоичную систему счисления и те, кто нет.
Veselyn вне форума Ответить с цитированием
Старый 04.04.2009, 22:23   #3
supernolya@yandex.
Новичок
Джуниор
 
Регистрация: 03.04.2009
Сообщений: 2
По умолчанию

Помогите осуществить ввод карты (например [[1,1,1],[1,0,1],[1,1,1],[0,1],[1],[]]) с клавиатуры.

код программы:
Код:
DOMAINS   i=integer    il=i*   ill=il*

PREDICATES
paint(ill,il,il)%---paint(карта,выход палитра)
check(il,i,il)
getCol(i,il,i,il)
member(il,i)

goal
write("Vvedite kartu"),%---Здесь необходимо ввести карту с клавиатуры-список списков и поместить в Map
getCol(0,[1,2,3,4],Ac,Cols), paint(Map,Out,Cols),!, write("Neobhodimo ", Ac, " cveta").%---в getCol(0,[1,2,3,4],Ac,Cols) [1,2,3,4]-краски в палитре, из них потом выбираем для нашей раскраски, те 1-й цвет, 2-ой цвет и т д 

CLAUSES
paint([],[],_):-!.
paint([G|H],[C|Cols],ColIn):- paint(H,Cols,ColIn), member(ColIn,C), check(G,C,Cols).

check([],_,_):-!.
check([1|_],C,[C|_]):- !,fail.%---если 1, значит есть общая граница, результат неудовлетворительный
check([_|H],C,[_|Cols]):- !, check(H,C,Cols).

getCol(X,_,X,[]).
getCol(X,[G|H],Y,[G|Z]):- !, Xn=X+1, getCol(Xn,H,Y,Z).%---подсчитывает количество цветов , используемых для раскраски

member([X|_],X).
member([_|X],Y):- member(X,Y).

map=[[1,1,1],[1,0,1],[1,1,1],[0,1],[1],[]] - это map = [strana("Chili",A,[B,C,D]),
strana("Peru",B,[A,C,E]),
strana("Panama",C,[A,B,D,E,F]),
strana("Russia",D,[A,C,F]),
strana("England",E,[B,C,F]),
strana("Gemani",F,[E,C,D])], просто записана без повторов

Последний раз редактировалось supernolya@yandex.; 05.04.2009 в 10:42.
supernolya@yandex. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создание карты города Коржик Общие вопросы Delphi 8 13.08.2009 04:54
Интерактивные карты? myxaxa41 Свободное общение 2 13.02.2009 15:54
Совсем необычная раскраска DBGrid-a _SERGEYX_ Общие вопросы Delphi 2 26.09.2008 09:51
Карты для игр L_M Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 16.05.2008 15:08
карты изображений )Игнат( HTML и CSS 1 07.02.2008 19:17