Re:Which answer in this list is the correct answer to this q...
by tephra on Friday November 15, 2019 @06:10AM
(#21543948)
Using the clpb library [0]:
[0] https://www.metalevel.at/prolog/puzzles
[ Parent
| on HN ]
Re:Which answer in this list is the correct answer to this q...
by grubb on Friday November 15, 2019 @07:35AM
(#21544304)
Alternatively using z3 [0]:
(declare-const a1 Bool)
(declare-const a2 Bool)
(declare-const a3 Bool)
(declare-const a4 Bool)
(declare-const a5 Bool)
(declare-const a6 Bool)
(assert (= a1 (and a2 (and a3 (and a4 (and a5 a6))))))
(assert (= a2 (not (or a3 (or a4 (or a5 a6))))))
(assert (= a3 (and a1 a2)))
(assert (= a4 (or a1 (or a2 a3))))
(assert (= a5 (not (or a1 (or a2 (or a3 a4))))))
(assert (= a6 (not (or a1 (or a2 (or a3 (or a4 a5)))))))
(assert (or a1 (or a2 (or a3 (or a4 (or a5 a6))))))
(check-sat)
(get-model)
(exit)
The model is satisfiable where only a5 is true, anyone can run it themselves and play with it [1].Additionally forcing a5 to be false by adding the following to the list of assertions:
(assert (not a5))
And the model becomes unsatisfiable.Edit: Finally, to make sure there's not some possible solution where a5 is true as well as another assertion you could alternatively add this assertion:
(assert (and a5 (or a1 (or a2 (or a3 (or a4 (or a6)))))))
And the model also becomes unsatisfiable. So 5 only seems to be the correct answer.
Re:Which answer in this list is the correct answer to this q...
by Recursing on Friday November 15, 2019 @09:52AM
(#21545246)
I posted a solution using the python z3 library, which might be easier to use for people used to python, here: https://news.ycombinator.com/item?id=21545143
Re:Which answer in this list is the correct answer to this q...
by Recursing on Monday November 18, 2019 @04:17PM
(#21568226)
That solution was not correct, see https://news.ycombinator.com/item?id=21568151
Re:Which answer in this list is the correct answer to this q...
by justtopostthis3 on Friday November 15, 2019 @10:46AM
(#21545752)
Using no libraries!
a1([f,f,_,_,_,_]).
a1([f,t,f,_,_,_]).
a1([f,t,t,f,_,_]).
a1([f,t,t,t,f,_]).
a1([f,t,t,t,t,f]).
a1([t,t,t,t,t,t]).
a2([_,f,t,_,_,_]).
a2([_,f,f,t,_,_]).
a2([_,f,f,f,t,_]).
a2([_,f,f,f,f,t]).
a2([_,t,f,f,f,f]).
a3([f,_,f,_,_,_]).
a3([t,f,f,_,_,_]).
a3([t,t,t,_,_,_]).
a4([t,_,_,t,_,_]).
a4([f,t,_,t,_,_]).
a4([f,f,t,t,_,_]).
a4([f,f,f,f,_,_]).
a5([t,_,_,_,f,_]).
a5([f,t,_,_,f,_]).
a5([f,f,t,_,f,_]).
a5([f,f,f,t,f,_]).
a5([f,f,f,f,t,_]).
a6([t,_,_,_,_,f]).
a6([f,t,_,_,_,f]).
a6([f,f,t,_,_,f]).
a6([f,f,f,t,_,f]).
a6([f,f,f,f,t,f]).
a6([f,f,f,f,f,t]).
solution(X) :- a1(X), a2(X), a3(X), a4(X), a5(X), a6(X).