Раскраска карты. Помочь написать на Turbo или перевести с Visual на Turbo - Prolog

Узнай цену своей работы

Формулировка задачи:

Приветствую! Задание состоит в следующем: необходимо РАЗРАБОТАТЬ ПРОГРАММУ ДЛЯ РАСКРАШИВАНИЯ ПЛОСКОЙ КАРТЫ, а именно раскрасить карту четырьмя цветами так, чтобы никакие 2 смежные области на ней не были окрашены в одинаковые цвета. При этом предусмотреть возможность задания карты!!! есть наброски в виде предложений :
Листинг программы
  1. color_map([Region|Regions],Colors) :-
  2. color_region(Region,Colors),
  3. color_map(Regions,Colors).
  4. color_map([],Colors).
  5. color_region(region(Name,Color,Neighbors),Colors) :-
  6. select(Color,Colors,Colors1),
  7. members(Neighbors,Colors1).
  8. select(X,[X|Xs],Xs).
  9. select(X,[Y|Ys],[Y|Zs]) :- select(X,Ys,Zs).
  10. members([X|Xs],Ys) :- member(X,Ys), members(Xs,Ys).
  11. members([],Ys).
  12. test_color(Name,Map) :-
  13. map(Name,Map),
  14. colors(Name,Colors),
  15. color_map(Map,Colors).
  16. map(test,[region(a,A,[B,C,D]), region(b,B,[A,C,E]),
  17. region(c,C,[A,B,D,E,F]), region(d,D,[A,C,F]),
  18. region(e,E,[B,C,F]), region(f,F,[C,D,E])]).
  19. map(west_europe,
  20. [ region(portugal,P,[E]), region(spain,E,[F,P]),
  21. region(france,F,[E,I,S,B,WG,L]), region(belgium,B,[F,H,L,WG]),
  22. region(holland,H,[B,WG]), region(west_germany,WG,[F,A,S,H,B,L]),
  23. region(luxembourg,L,[F,B,WG]), region(italy,I,[F,A,S]),
  24. region(switzerland,S,[F,I,A,WG]), region(austria,A,[I,S,WG])]).
  25. colors(X,[red,yellow,blue,white]).
Помогите оформить это все в РАБОТАЮЩУЮ реально программу , и хотелось бы, чтобы реализация была на Turbo Prolog !// заранее всем спасибо за помощь!!

Решение задачи: «Раскраска карты. Помочь написать на Turbo или перевести с Visual на Turbo»

textual
Листинг программы
  1. domains
  2. slist=string*
  3. region=region(string,string,slist)
  4. regions=region*
  5.  
  6. predicates
  7. color_map(regions,slist)
  8. color_region(region,slist)
  9. select(string,slist,slist)
  10. members(slist,slist)
  11. test_color(string,regions)
  12. map(string,regions)
  13. colors(slist)
  14. member(string,slist).
  15.  
  16. clauses
  17. color_map([Region|Regions],Colors) :-color_region(Region,Colors),color_map(Regions,Colors).
  18. color_map([],_).
  19.  
  20. color_region(region(_,Color,Neighbors),Colors) :-
  21. select(Color,Colors,Colors1),
  22. members(Neighbors,Colors1).
  23.  
  24. select(X,[X|Xs],Xs).
  25. select(X,[Y|Ys],[Y|Zs]) :- select(X,Ys,Zs).
  26.  
  27. member(X,[X|_]).
  28. member(X,[_|Xs]):-member(X,Xs).
  29.  
  30. members([X|Xs],Ys) :- member(X,Ys), members(Xs,Ys).
  31. members([],_).
  32.  
  33. test_color(Name,Map) :-
  34. map(Name,Map),
  35. colors(Colors),
  36. color_map(Map,Colors).
  37.  
  38. map("test",[region(a,A,[B,C,D]), region(b,B,[A,C,E]),
  39. region(c,C,[A,B,D,E,F]), region(d,D,[A,C,F]),
  40. region(e,E,[B,C,F]), region(f,F,[C,D,E])]).
  41.  
  42. map("west_europe",
  43. [ region("portugal",P,[E]), region("spain",E,[F,P]),
  44. region("france",F,[E,I,S,B,WG,L]), region("belgium",B,[F,H,L,WG]),
  45. region("holland",H,[B,WG]), region("west_germany",WG,[F,A,S,H,B,L]),
  46. region("luxembourg",L,[F,B,WG]), region("italy",I,[F,A,S]),
  47. region("switzerland",S,[F,I,A,WG]), region("austria",A,[I,S,WG])]).
  48.  
  49. colors(["red","yellow","blue","white"]).
  50.  
  51. goal
  52. test_color("west_europe",Map),write(Map).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.222 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы