Skip to content

Instantly share code, notes, and snippets.

@PythonJedi
Created February 23, 2017 01:44
Show Gist options
  • Save PythonJedi/e7fc101dd7912f07048ff53d258cc554 to your computer and use it in GitHub Desktop.
Save PythonJedi/e7fc101dd7912f07048ff53d258cc554 to your computer and use it in GitHub Desktop.
prolog code for facebook logic puzzle.
digit(X) :- member(X,[0,1,2,3,4,5,6,7,8,9]).
code([X,Y,Z]) :- digit(X), digit(Y), digit(Z),
rule1([X,Y,Z]),
rule2([X,Y,Z]),
rule3([X,Y,Z]),
rule4([X,Y,Z]),
rule5([X,Y,Z]).
rule1([X,Y,Z]) :- X=6 ; Y=8 ; Z=2.
rule2([X,Y,Z]) :- Y=6 ; Z=6 ; X=1 ; Z=1 ; X=4 ; Y=4.
rule3([X,Y,Z]) :- (Y=2, (X=0 ; Z=0)) ; (Z=2, X=0);
(Z=2, (X=6 ; Y=6)) ; (Y=2, X=6);
(Z=0, (X=6 ; Y=6)) ; (X=0, Y=6).
rule4(C) :- \+ (member(7,C) ; member(8,C) ; member(3,C)).
rule5([X,Y,Z]) :- Y=7 ; Z=7 ; X=8 ; Z=8 ; X=0 ; Y=0.
@PythonJedi
Copy link
Author

load into favorite prolog engine, query "?- code(C)." It should produce "C = [0,4,2]; C= [0,6,2]."

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment