dawrehxyz

LeleLiliLuluMjauMjau

Dec 11th, 2016
7,220
0
Never
2
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 1.14 KB | None | 0 0
  1. verify(Input) :-
  2.   see(Input), read(T), read(L), read(S), read(F), seen,
  3.   check(T, L, S, [], F, false).
  4.  
  5. check(T, L, S, U, F, Neg) :-
  6.   verifyState(F, S, L, Neg) ;
  7.   (
  8.     (neg(_) = F, neg(T, L, S, U, F, Neg)) ;
  9.     (or(_) = F , or(T, L, S, U, F, Neg)) ;
  10.     (and(_) = F , and(T, L, S, U, F, Neg)) ;
  11.     (ax(_) = F , ax(T, L, S, U, F, Neg)) ;
  12.     (ag(_) = F , ag(T, L, S, U, F, Neg)) ;
  13.     (af(_) = F , af(T, L, S, U, F, Neg)) ;
  14.     (ex(_) = F , ex(T, L, S, U, F, Neg)) ;
  15.     (eg(_) = F , eg(T, L, S, U, F, Neg)) ;
  16.     (ef(_) = F , ef(T, L, S, U, F, Neg))
  17.   ), !.
  18.  
  19. ef(T, L, S, U, F, Neg) :-
  20.   not(member(S, U)),
  21.   ef(NewF) = F,
  22.   nextState(S, T, NextS),
  23.   check(T, L, NextS, [S|U], NewF, true), !.
  24.  
  25. ax(T, L, S, U, F, Neg) :-
  26.   not(member(S, U)),
  27.   ax(NewF) = F,
  28.   check(T, L, S, U, NewF, true).
  29.  
  30. neg(T, L, S, U, F, Neg) :-
  31.   neg(NewF) = F,
  32.   check(T, L, S, U, NewF, true).
  33.  
  34. and(T, L, S, U, F, Neg) :- !.
  35.  
  36. or(T, L, S, U, F, Neg) :- !.
  37.  
  38.  
  39. verifyState(F, S, L, Neg) :-
  40.   member([S, A], L),
  41.   (
  42.     (Neg = false, member(F, A)) ;
  43.     not(member(F, A))
  44.   ).
  45.  
  46. nextState(S, T, NextS) :-
  47.   member([S, A], T),
  48.   member(NextS, A).
Advertisement
Comments
  • User was banned
  • User was banned
Add Comment
Please, Sign In to add comment