Раскраска карты. Помочь написать на Turbo или перевести с Visual на Turbo - Prolog
Формулировка задачи:
Приветствую!
Задание состоит в следующем: необходимо РАЗРАБОТАТЬ ПРОГРАММУ ДЛЯ РАСКРАШИВАНИЯ ПЛОСКОЙ КАРТЫ, а именно раскрасить карту четырьмя цветами так, чтобы никакие 2 смежные области на ней не были окрашены в одинаковые цвета. При этом предусмотреть возможность задания карты!!!
есть наброски в виде предложений :
Помогите оформить это все в РАБОТАЮЩУЮ реально программу , и хотелось бы, чтобы реализация была на Turbo Prolog !// заранее всем спасибо за помощь!!
Решение задачи: «Раскраска карты. Помочь написать на Turbo или перевести с Visual на Turbo»
textual
Листинг программы
domains slist=string* region=region(string,string,slist) regions=region* predicates color_map(regions,slist) color_region(region,slist) select(string,slist,slist) members(slist,slist) test_color(string,regions) map(string,regions) colors(slist) member(string,slist). clauses color_map([Region|Regions],Colors) :-color_region(Region,Colors),color_map(Regions,Colors). color_map([],_). color_region(region(_,Color,Neighbors),Colors) :- select(Color,Colors,Colors1), members(Neighbors,Colors1). select(X,[X|Xs],Xs). select(X,[Y|Ys],[Y|Zs]) :- select(X,Ys,Zs). member(X,[X|_]). member(X,[_|Xs]):-member(X,Xs). members([X|Xs],Ys) :- member(X,Ys), members(Xs,Ys). members([],_). test_color(Name,Map) :- map(Name,Map), colors(Colors), color_map(Map,Colors). map("test",[region(a,A,[B,C,D]), region(b,B,[A,C,E]), region(c,C,[A,B,D,E,F]), region(d,D,[A,C,F]), region(e,E,[B,C,F]), region(f,F,[C,D,E])]). map("west_europe", [ region("portugal",P,[E]), region("spain",E,[F,P]), region("france",F,[E,I,S,B,WG,L]), region("belgium",B,[F,H,L,WG]), region("holland",H,[B,WG]), region("west_germany",WG,[F,A,S,H,B,L]), region("luxembourg",L,[F,B,WG]), region("italy",I,[F,A,S]), region("switzerland",S,[F,I,A,WG]), region("austria",A,[I,S,WG])]). colors(["red","yellow","blue","white"]). goal test_color("west_europe",Map),write(Map).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д