fork download
  1. color(red).
  2. color(green).
  3. color(blue).
  4. color(yellow).
  5.  
  6. adjacent(鶴見, 神奈川).
  7. adjacent(神奈川, 西).
  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.  
  30. different(X-Y, Z-W) :-
  31. (adjacent(X, Z); adjacent(Z, X)) -> Y \= W ; true.
  32.  
  33. coloring([
  34. 鶴見-A, 神奈川-B, 西-C,-D,-E, 港南-F,
  35. 磯子-G, 金沢-H,-I, 保土ケ谷-J,-K, 瀬谷-L,
  36. -M, 戸塚-N, 都筑-O, 港北-P,-Q, 青葉-R
  37. ]) :-
  38. color(A), color(B), color(C), color(D),
  39. color(E), color(F), color(G), color(H),
  40. color(I), color(J), color(K), color(L),
  41. color(M), color(N), color(O), color(P),
  42. color(Q), color(R),
  43.  
  44. Vars = [
  45. 鶴見-A, 神奈川-B, 西-C,-D,-E, 港南-F,
  46. 磯子-G, 金沢-H,-I, 保土ケ谷-J,-K, 瀬谷-L,
  47. -M, 戸塚-N, 都筑-O, 港北-P,-Q, 青葉-R
  48. ],
  49.  
  50. % 制約を先にまとめて課す
  51. forall(
  52. (member(X1-Y1, Vars), member(X2-Y2, Vars), X1 @< X2),
  53. different(X1-Y1, X2-Y2)
  54. ),
  55.  
  56. % 出力
  57. write('4色で塗り分け可能'), nl,
  58. print_colors(Vars).
  59.  
  60. print_colors([]).
  61. print_colors([-| 残り]) :-
  62. write(), write(' -> '), write(), nl,
  63. print_colors(残り).
  64.  
  65. :- coloring(_).
  66.  
Success #stdin #stdout #stderr 4.99s 7172KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
ERROR: /home/FyVPsI/prog:65:
	member_/3: Caught signal 24 (xcpu)
Warning: /home/FyVPsI/prog:65:
	Goal (directive) failed: user:coloring(_3142)
ERROR: '$runtoplevel'/0: Undefined procedure: program/0
   Exception: (3) program ? EOF: exit