Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- domains
- marks = mark*
- students = student*
- numgroups = numgr*
- student = s(fam,name,otch,military,marks)
- fak,fam,name,otch,subj = string
- kod,numgr,military,mk = integer
- mark = m(subj,mk)
- facts
- q11(fak,integer)
- q21(fak,numgr,integer)
- dq31(string,string,string)
- dq4(numgr)
- dq5(subj,numgr)
- predicates
- group(fak,kod,numgr,students)
- q12(fak)
- q1(fak)
- q2
- q33(integer)
- q22
- q41(subj,numgr,students)
- q42(subj,numgr,marks,students)
- q44(subj)
- q5(numgr)
- q51(students,numgr)
- q52(marks,numgr)
- count1(students,integer,integer)
- find(marks,integer,integer,integer)
- count(students,integer,integer)
- q331(students)
- q312(marks,string,string,string)
- clauses
- group("6f",604,2,[s("Glyanko","Vitaly","Sergeevich",1,[m("Matanaliz",5),m("Matlog",3),m("Fizika",3),m("Elteh",3)]),
- s("Dmitriev","Dmitri","Mihailovich",0,[m("Matanaliz",5),m("Matlog",5),m("Fizika",4),m("Elteh",4)]),
- s("Botan","B","b",0,[m("Matanaliz",5),m("Matlog",5),m("Fizika",5),m("Elteh",5)]),
- s("Kuznecov","Slavik","Sergeevich",1,[m("Matanaliz",4),m("Matlog",4),m("Fizika",4),m("Elteh",2)]),
- s("Zahvatkin","Danil","Vicheslavovich",1,[m("Matanaliz",3),m("Matlog",4),m("Fizika",2),m("Elteh",2)])]).
- group("5f",505,5,[s("Otlichnic","Otlich","Otlichnevich",1,[m("matan",5),m("fizika",5),m("elteh",5),m("shemoteh",5)]),
- s("Ivanov","Ivan","Ivanovich",0,[m("matan",4),m("fizika",4),m("elteh",3),m("shemoteh",4)]),
- s("Sahin","Sasha","Alexsandrovich",1,[m("Algebra",4),m("Fizika",2),m("elteh",3),m("shemoteh",4)]),
- s("Kukushkin","Anatoli","Petrovich",0,[m("matan",5),m("fizika",3),m("elteh",4),m("shemoteh",4)]),
- s("Petrov","Petr","Petrovich",1,[m("matan",2),m("fizika",4),m("elteh",3),m("shemoteh",4)])]).
- group("3f",405,4,[s("Sidorov","Anton","Antonovich",1,[m("English",5),m("History",5),m("Algebra",5),m("Graphics",5)]),
- s("Balbesov","Balbes","Balbesovich",1,[m("English",4),m("History",4),m("Algebra",2),m("Graphics",3)]),
- s("Samaravcev","Krasava","Kras",0,[m("English",5),m("History",5),m("Algebra",4),m("Graphics",4)]),
- s("Nevezuchi","Vasil","Vasil",1,[m("English",4),m("History",4),m("Algebra",2),m("Graphica",3)]),
- s("Saharov","Ilia","Viktorovich",0,[m("English",5),m("History",5),m("Algebra",5),m("Graphics",5)])]).
- group("6f",603,3,[s("Glyanko","Vitaly","Sergeevich",1,[m("Matanaliz",2),m("Matlog",3),m("Fizika",3),m("Elteh",3)]),
- s("Krasava","K","K",0,[m("Matanaliz",5),m("Matlog",5),m("Fizika",5),m("Elteh",5)]),
- s("Dmitriev","Dmitri","Mihailovich",0,[m("Matanaliz",2),m("Matlog",5),m("Fizika",4),m("Elteh",4)]),
- s("durakov","durachok","durakovich",0,[m("Matanaliz",2),m("Matlog",2),m("Fizika",2),m("Elteh",2)]),
- s("Zahvatkin","Danil","Vicheslavovich",1,[m("Matanaliz",2),m("Matlog",4),m("Fizika",2),m("Elteh",2)])]).
- %1
- q12(F):-not(q11(F,_)),assert(q11(F,0)),q1(F).%normal
- q1(F):-group(F,_,_,S), q11(F,M), count(S,M,N), retract(q11(F,M)), assert(q11(F,N)), fail.
- count([], N, N).
- count([A|H], M, N):-M1=M+1, count(H,M1,N).
- %2
- q22:-assert( q21("",0,0)),q2.%normal
- q2:- group(F, _, Q, S), q21(R1, R, N), count1(S, 0, M), N<M, retract(q21(R1, R, N)), assert(q21(F, Q, M)), fail.
- count1([], N, N).
- count1([s(_, _, _, _, Z)|H], M, N):-find(Z, 0 ,0, 1), M1=M+1, count1(H, M1, N); count1(H, M, N).
- find([], N, N, 1).
- find([], M, M, 0).
- find([m(A,B)|H], N, Z, M):- B=5, N1=N+1, Z1=Z+1, find(H, N1, Z1, M).
- find([m(A,B)|H], N, Z, M):- Z1=Z+1, find(H, N, Z1, M).
- %5
- q44(Sub):-dq4(Gr),write('*',Gr),nl,fail.
- q44(Sub):-not(dq4(_)),group(_,_,G,L),q41(Sub,G,L),fail.
- q41(_,_,[]).
- q41(Sub,G,[H|T]):-H=s(_,_,_,_,Ma),q42(Sub,G,Ma,T).
- q42(Sub,G,[],S):-q41(Sub,G,S).
- q42(Sub,G,[H|T],S):-H=m(Subj,_),Subj=Sub,write(G),nl,assert(dq4(G)),!.
- q42(Sub,G,[H|T],S):-H=m(Subj,_),Subj<>Sub,q42(Sub,G,T,S).
- %3
- q5(Gr):-dq5(Sub,Gr),write('$',Sub),nl,fail.%normal
- q5(Gr):-not(dq5(_,Gr)),group(_,_,N,L),Gr=N,q51(L,Gr),fail.
- q51([H|T],Gr):-H=s(_,_,_,_,P),q52(P,Gr).
- q52([],_).
- q52([H|T],Gr):-H=m(S,_),write(S),nl,assert(dq5(S,Gr)),q52(T,Gr).
- %4
- q33(NG):-dq31(F,I,O),write('*',F,I,O),nl,fail.
- q33(NG):-not(dq31(_,_,_)),group(_,_,NUM,ListStudents), NUM = NG, q331(ListStudents), fail.
- q331([H|T]):- H = s(F,I,O,_,Marks),
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement