Advertisement
Guest User

Untitled

a guest
Aug 31st, 2021
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 1.88 KB | None | 0 0
  1. eq(X,X).
  2. ne(X,X):-!,fail.
  3. ne(X,_).
  4. ex(_,[]).
  5. ex(X,[X|_]):-!,false.
  6. ex(X,[_|L]):-ex(X,L).
  7. in(X,[X|L],L).
  8. in(X,[Y|L],[Y|M]):-in(X,L,M).
  9. match([],[]).
  10. match([X|L],Q):-in(X,Q,M),match(L,M).
  11. suguru([
  12. [V1_1,V1_2,V1_3,V1_4,V1_5],
  13. [V2_1,V2_2,V2_3,V2_4,V2_5],
  14. [V3_1,V3_2,V3_3,V3_4,V3_5],
  15. [V4_1,V4_2,V4_3,V4_4,V4_5],
  16. [V5_1,V5_2,V5_3,V5_4,V5_5]]) :-
  17.     eq(V1_1, 1),
  18.     eq(V1_4, 5),
  19.     eq(V3_1, 1),
  20.     eq(V3_3, 2),
  21.     eq(V3_5, 4),
  22.     eq(V5_2, 3),
  23.     match([V5_5], [1]),
  24.     match([V1_2,V1_3,V2_1], [2,3,4]),
  25.     match([V1_5,V2_5,V4_5], [1,2,3]),
  26.     match([V4_4,V5_1,V5_3,V5_4], [1,2,4,5]),
  27.     match([V2_2,V2_3,V3_2,V4_1], [2,3,4,5]),
  28.     match([V2_4,V3_4,V4_2,V4_3], [1,3,4,5]),
  29.     ne(V1_1,V2_2),
  30.     ne(V1_2,V2_2),
  31.     ne(V1_2,V2_3),
  32.     ne(V1_3,V1_4),
  33.     ne(V1_3,V2_2),
  34.     ne(V1_3,V2_3),
  35.     ne(V1_3,V2_4),
  36.     ne(V2_1,V2_2),
  37.     ne(V2_1,V3_2),
  38.     ne(V1_4,V2_3),
  39.     ne(V1_4,V2_4),
  40.     ne(V1_5,V2_4),
  41.     ne(V2_5,V3_4),
  42.     ne(V3_5,V4_4),
  43.     ne(V4_5,V5_4),
  44.     ne(V4_5,V5_5),
  45.     ne(V4_4,V4_5),
  46.     ne(V4_4,V5_5),
  47.     ne(V5_4,V5_5),
  48.     ne(V2_2,V3_3),
  49.     ne(V2_3,V2_4),
  50.     ne(V2_3,V3_3),
  51.     ne(V2_3,V3_4),
  52.     ne(V3_1,V4_2),
  53.     ne(V3_2,V3_3),
  54.     ne(V3_2,V4_2),
  55.     ne(V3_2,V4_3),
  56.     ne(V4_1,V4_2),
  57.     ne(V4_1,V5_2),
  58.     ne(V2_4,V2_5),
  59.     ne(V2_4,V3_5),
  60.     ne(V3_3,V4_4),
  61.     ne(V3_4,V3_5),
  62.     ne(V3_4,V4_4),
  63.     ne(V3_4,V4_5),
  64.     ne(V4_2,V5_2),
  65.     ne(V4_2,V5_3),
  66.     ne(V4_3,V4_4),
  67.     ne(V4_3,V5_2),
  68.     ne(V4_3,V5_3),
  69.     ne(V4_3,V5_4),
  70.     true.
  71. describe:-write('solving...\n'),
  72.     write('+---+---+---+---+---+\n'),
  73.     write('| 1         | 5     |\n'),
  74.     write('+   +---+---+---+   +\n'),
  75.     write('|   |       |   |   |\n'),
  76.     write('+---+   +---+   +   +\n'),
  77.     write('| 1     | 2     | 4 |\n'),
  78.     write('+   +---+   +---+   +\n'),
  79.     write('|   |       |   |   |\n'),
  80.     write('+---+---+---+   +---+\n'),
  81.     write('|     3         |   |\n'),
  82.     write('+---+---+---+---+---+\n'),
  83.     true.
  84. w([]).
  85. w([X|L]):-write(X),write('\n'),w(L).
  86. r:-reconsult(suguru).
  87. h:-halt.
  88. x:-describe,time(suguru(L)),w(L).
  89.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement