Advertisement
Guest User

Untitled

a guest
Apr 18th, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 3.15 KB | None | 0 0
  1. domains
  2.  
  3. faculty_name, second_name, name, subject = symbol
  4. spec_code, group_number, mark, military_department = real
  5. group=group(faculty_name, spec_code, group_number, list_composition)
  6. list_composition=composition*
  7. composition=composition(second_name, name, military_department, list_vedomost)
  8. list_vedomost=vedomost*
  9. vedomost=vedomost(subject, mark)
  10.  
  11. facts
  12. average_mark(real,real)
  13. min_students(group_number, real)
  14. dq3(group_number,subject)
  15. dq4(group_number, spec_code)
  16. dq5(faculty_name, group_number)
  17.  
  18. predicates
  19. nondeterm groups(group)
  20. q1(group_number)
  21. q11(real, list_composition, real, real, real)
  22. q12(real,list_vedomost,real,real,real)
  23. q2
  24. q21(list_composition, real)
  25. nondeterm q3(real)
  26. nondeterm q31(real,list_composition)
  27. nondeterm q32(real,list_vedomost)
  28. q4(group_number)
  29. q5(faculty_name)
  30.  
  31.  
  32.  
  33. clauses
  34. groups(group("faculty name1",6,6102,[composition("Mike","Gordon",1, [vedomost("Phys", 5), vedomost("Math", 3), vedomost("Lang", 4)]),
  35. composition("Sam", "Jackson", 0, [vedomost("SII", 3), vedomost("Religion", 2)])])).
  36. groups(group("faculty name1",2,6208,[composition("Sally","Smith",0, [vedomost("Eloctronic", 4), vedomost("Mech", 5)]),
  37. composition("Jack", "Lowson", 0, [vedomost("Program", 2), vedomost("Math", 3), vedomost("Eng", 5)])])).
  38. groups(group("faculty name2",4,6311,[composition("Andy","White",1, [vedomost("History", 5)])])).
  39.  
  40. average_mark(0,0).
  41. q1(N):-
  42. groups(group(_,_,N,L)),
  43. q11(N,L,0,C,0),
  44. average_mark(E,R),
  45. C>R,
  46. retract(average_mark(E,R)),
  47. assert(average_mark(N,C)),fail.
  48.  
  49. q11(_,[],Z1,Z,G):-Z=Z1/G.
  50. q11(A1,[H|T],Y,W,Q):-H=composition(_,_,_,U),q12(A1,U,0,V,0),Y1=Y+V, Q1=Q+1, q11(A1,T,Y1,W,Q1).
  51. q12(_,[],D1,D,P):-D=D1/P.
  52. q12(F,[H1|T1],D1,D2,P1):-H1= vedomost(_,Z), D3=D1+Z, P3=P1+1,
  53. q12(F,T1,D3,D2,P3).
  54.  
  55. min_students(6102,23321456).
  56. q2:-
  57. groups(group(_,_,GN,L)),
  58. min_students(Q,M),
  59. q21(L,N),
  60. N<M,
  61. retract(min_students(Q,M)),
  62. assert(min_students(GN,N)), fail.
  63. q21([_|T],N):-q21(T,N1),N=N1+1.
  64. q21([],0).
  65.  
  66.  
  67. %q3(K):-groups(group(_,_,K,L)), q31(L).
  68. %q31([]).
  69. %q31([H|T]):-H=composition(_,_,_,V),q32(V),q31(T).
  70. %q32([]).
  71. %q32([H1|T1]):-H1=vedomost(S,_), write(S),nl, q32(T1).
  72.  
  73. q3(GN):- dq3(GN,S),write('#',S), nl,fail.
  74. q3(GN):- not(dq3(GN,_)),groups(group(_,_,GN,L)), q31(GN,L), fail.
  75. q31(GN,[H|T]):-H=composition(_,_,_,L1), q32(GN,L1), q31(GN,T).
  76. q31(_,[]).
  77. q32(GN,[H1|T1]):-H1=vedomost(S,_), assert(dq3(GN,S)), write(S), nl,q32(GN,T1).
  78. q32(_,[]).
  79.  
  80. q4(G):-groups(group(_,C,G,_)), write(C), nl, fail.%ñòàòè÷åñêèé
  81.  
  82. q4(G):-dq4(G,A), write(G," ",A), nl, fail.%äèíàìè÷åñêèé
  83. q4(G):- not(dq4(G,_)), groups(group(_,C,G,_)), write(C), nl, assert(dq4(G,C)), fail.
  84.  
  85.  
  86. q5(K):-groups(group(K,_,A,_)), write(A), nl, fail.%ñòàòè÷åñêèé
  87.  
  88. q5(K):-dq5(K,N), write(K," ",N), nl, fail.%äèíàìè÷åñêèé
  89. q5(K):-not(dq5(K,_)), groups(group(K,_,N,_)), write(N), nl, assert(dq5(K,N)), fail.
  90.  
  91.  
  92.  
  93. goal
  94. %q1(6311); average_mark(N,C).
  95. %q2; min_students(A,B).
  96. %q3(6208).
  97. q3(6208);q3(6208).
  98. %q4(6311); q4(6311).
  99. %write("Code:"), nl,q4(6311).
  100. %write("Groups:"),nl,q5("faculty name1").
  101. %q5("faculty name1");q5("faculty name1").
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement