Раскраска карты. Помочь написать на Turbo или перевести с Visual на Turbo - Prolog
Формулировка задачи:
Приветствую!
Задание состоит в следующем: необходимо РАЗРАБОТАТЬ ПРОГРАММУ ДЛЯ РАСКРАШИВАНИЯ ПЛОСКОЙ КАРТЫ, а именно раскрасить карту четырьмя цветами так, чтобы никакие 2 смежные области на ней не были окрашены в одинаковые цвета. При этом предусмотреть возможность задания карты!!!
есть наброски в виде предложений :
Помогите оформить это все в РАБОТАЮЩУЮ реально программу , и хотелось бы, чтобы реализация была на Turbo Prolog !// заранее всем спасибо за помощь!!
Листинг программы
- color_map([Region|Regions],Colors) :-
- color_region(Region,Colors),
- color_map(Regions,Colors).
- color_map([],Colors).
- color_region(region(Name,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).
- members([X|Xs],Ys) :- member(X,Ys), members(Xs,Ys).
- members([],Ys).
- test_color(Name,Map) :-
- map(Name,Map),
- colors(Name,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(X,[red,yellow,blue,white]).
Решение задачи: «Раскраска карты. Помочь написать на 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).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д