Create a Prolog program that solves the following logic puzzle, printing the rig
ID: 3831952 • Letter: C
Question
Create a Prolog program that solves the following logic puzzle, printing the right answer for each of the four cases.
There are 4 customers: Genevieve, Lucia, Shawna, Vanessa
There are 4 shoe sizes: 4,5,6,7
There are 4 shoe manufacturers: Abbott Hill, Manzarita, Graffetz, Williford
1. Of the Manzarita footwear and Lucia's pair, one was a size 7 and the other was a size 4.
2. Genevieve's pair was 2 sizes smaller than the Abbott Hill footwear.
3. Vanessa's pair was 2 sizes larger than Genevieve's pair.
4. The Graffetz footwear was somewhat larger than Shawna's pair.
For each customer, show their name, their shoe size and their shoe's manufacturer in a format similar to this:
Joe bought a size 13 Nike.
Tom bought a size 12 Reebok.
(etc.)
Explanation / Answer
I have written the logics only,need to modify.
all_diff(L) :- + (select(X,L,R), memberchk(X,R)).
owners( [Genevieve,Lucia,Shawna,Vanessa]).
owner( X ) :-
owners( C ), member( X, C ).
sizes( [4,5,6,7]).
size( X ) :-
sizes( C ), member( X, C ).
manufacturers( [AbbottHill,Manzarita,Graffetz,Williford]).
manufacturer( X ) :-
manufacturers( C ), member( X, C ).
solution( Solution ) :-
Solution = [E1, E2, E3,E4],
E1 = [Genevieve, P1, S1],
E2 = [Lucia, P2, S2],
E3 = [Shawna, P3, S3],
E4 = [Vanessa, P4, S4],
size( P1 ),
size( P2 ),
size( P3 ),
size( P4 ),
all_diff( [P1,P2,P3,P4]),
manufacturer( S1 ),
manufacturer( S2 ),
manufacturer( S3 ),
manufacturer( S4 ),
all_diff( [S1,S2,S3,S4]),
member( [_,7,Manzarita], Solution );member( [Lucia,4,_], Solution ),
member( [Genevieve,4,_], Solution );member( [Genevieve,5,_], Solution ),
member( [_,6,AbbottHill], Solution );member( [_,7,AbbottHill], Solution ),
member( [Vanessa,6,_], Solution );member( [Vanessa,7,_], Solution ),
member( [_,6,Graffetz], Solution );member( [_,7,Graffetz], Solution );member( [_,5,Graffetz], Solution ),
member( [Shawna,6,_], Solution );member( [Shawna,5,_], Solution );member( [Shawna,4,_], Solution ).