CS计算机代考程序代写 %%CPSC 312 2018 – Midterm #3 – A Solution

%%CPSC 312 2018 – Midterm #3 – A Solution

% Question 1

:- dynamic n,v.

p :- m,c.
p :- r,s.
m :- n.
c.
r :- t.
r :- w.
t :- v.
w.
s :- a.
a.

% The simplest model with m is false, has m and n false, and all other atoms are true

/*
yes :- p
yes :- r,s m :- r,s
yes :- w,s r :- w
yes :- s w
yes :- a s :- a
yes :- a

*/

% Question 2

/*
[trace] ?- p.
Call: p
Call: m **
Call: n
Fail: n **
Fail: m
Redo: p
Call: r **
Call: t
Call: v
Fail: v
Fail: t **
Redo: r
Call: w
Exit: w
Exit: r
Call: s **
Call: a
Exit: a
Exit: s **
Exit: p
true.
*/

% name(P,F,L) means person P’s first name is F and last name is L
name(davidp, “David”, “Poole”).
name(ainaz , “Ainaz”, “Hajimoradlou”).
name(liran, “Liran”, “Li”).
name(rui, “Rui”, “Ge”).

% office_hour(P, D, S, F) means the office hours for person P are are on day D from S to F (on a 24 hour clock).
% This is taken from the course home page
office_hour(davidp, wednesday, 15, 16).
office_hour(ainaz, thursday, 16, 17).
office_hour(ainaz, tuesday, 17, 18).
office_hour(liran, monday, 11, 12).
office_hour(liran, wednesday, 17, 18).
office_hour(rui, thursday, 10, 11).
office_hour(rui, friday, 16, 17).

% twoofficehours(D) is true if there are two office hours on day D starting at different times
twoofficehours(D) :-
office_hour(_,D,H1,_),
office_hour(_,D,H2,_),
H1 < H2. % David wrote H1 < H2 because (a) the hours need to be different and (b) we only want one proof for each pair not two % office_hours_on_same_day(F1,F2) is true if F1 and F2 are the first names of two people that have office hours office_hours_on_same_day(F1,F2) :- office_hour(P1,D,_,_), office_hour(P2,D,_,_), dif(P1,P2), name(P1,F1,_), name(P2,F2,_). % Question 4 %delall(E,L,R) delall(_,[],[]). delall(E,[E|T],R) :- delall(E,T,R). delall(E,[H|T],[H|R]) :- dif(E,H), delall(E,T,R). %delall(a,[a,v,a,t,a,r],R). % delall(a,[f,U,n],R). /* ?- delall(X,[a,b,c,a],R). X = a, R = [b, c] ; X = b, R = [a, c, a] ; X = c, R = [a, b, a] ; R = [a, b, c, a], dif(X, a), dif(X, c), dif(X, b), dif(X, a). */