fork download
  1. % 色の定義(4色)
  2. color(red).
  3. color(green).
  4. color(blue).
  5. color(yellow).
  6.  
  7. % 隣接関係(横浜市18区の一部簡略モデル)
  8. adjacent(鶴見, 神奈川).
  9. adjacent(神奈川, 西).
  10. adjacent(西,).
  11. adjacent(,).
  12. adjacent(, 港南).
  13. adjacent(港南, 磯子).
  14. adjacent(磯子, 金沢).
  15. adjacent(金沢,).
  16. adjacent(, 港南).
  17. adjacent(, 保土ケ谷).
  18. adjacent(保土ケ谷, 西).
  19. adjacent(保土ケ谷,).
  20. adjacent(, 瀬谷).
  21. adjacent(瀬谷,).
  22. adjacent(, 戸塚).
  23. adjacent(戸塚,).
  24. adjacent(都筑, 港北).
  25. adjacent(都筑, 青葉).
  26. adjacent(都筑,).
  27. adjacent(港北, 神奈川).
  28. adjacent(, 青葉).
  29. adjacent(港北, 鶴見).
  30. adjacent(保土ケ谷,).
  31.  
  32. % 色付け
  33. coloring([]).
  34. coloring([-| 残り]) :-
  35. color(),
  36. coloring(残り),
  37. forall(member(-2, 残り),
  38. ((adjacent(,); adjacent(,)) -> 色 \=2 ; true)).
  39.  
  40. % 出力
  41. print_colors([]).
  42. print_colors([-| 残り]) :-
  43. write(), write(' -> '), write(), nl,
  44. print_colors(残り).
  45.  
  46. % 実行メイン
  47. main :-
  48. 配置 = [
  49. 鶴見-_, 神奈川-_, 西-_,-_,-_, 港南-_,
  50. 磯子-_, 金沢-_,-_, 保土ケ谷-_,-_, 瀬谷-_,
  51. -_, 戸塚-_, 都筑-_, 港北-_,-_, 青葉-_
  52. ],
  53. coloring(配置),
  54. write('4色で塗り分け可能'), nl,
  55. print_colors(配置).
  56.  
Success #stdin #stdout #stderr 0.02s 6976KB
stdin
main
stdout
Standard output is empty
stderr
ERROR: '$runtoplevel'/0: Undefined procedure: program/0
   Exception: (3) program ? EOF: exit