1234567891011121314151617181920212223242526272829303132333435363738394041 |
- % Those are the books:
- book(a).
- book(b).
- book(c).
- book(d).
- book(e).
- book(f).
- % This is how 'touching' works:
- touching(X,Y):- touching(Y,X). % touching is symmetric
- touching(p1,p2).
- touching(p2,p3).
- touching(p3,p4).
- touching(p3,p5).
- touching(p3,p6).
- touching(p4,p5).
- touching(p5,p6).
- % List all possible positions:
- position(a):- p1,p2,p3,p4,p5,p6.
- position(b):- p1,p2,p3,p4,p5,p6.
- position(c):- p1,p2,p3,p4,p5,p6.
- position(d):- p1,p2,p3,p4,p5,p6.
- position(e):- p1,p2,p3,p4,p5,p6.
- position(f):- p1,p2,p3,p4,p5,p6.
- % Every position has one book
- getBook(p1) :- a,b,c,d,e,f.
- getBook(p2) :- a,b,c,d,e,f.
- getBook(p3) :- a,b,c,d,e,f.
- getBook(p4) :- a,b,c,d,e,f.
- getBook(p5) :- a,b,c,d,e,f.
- getBook(p6) :- a,b,c,d,e,f.
- % Add your facts:
- not(touching(position(a),position(d))).
- position(e):- p5,p2.
- % C touches exactly two books: eventually something like aggregate_all(count, touching(e,X), Count):-2.
- position(c):- p2, p4,p6.
- touching(position(a),position(f)).
- touching(position(e),position(f)).
|