Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- num(0).
- num(1).
- num(2).
- num(3).
- num(4).
- num(5).
- num(6).
- num(7).
- num(8).
- num(9).
- key([K1,K2,K3]) :- num(K1),num(K2),num(K3).
- right_numbers([], [], 0).
- right_numbers([S|As], [S|Ss], R) :- right_numbers(As, Ss, R2), R is R2+1.
- right_numbers([A|As], [S|Ss], R) :- A \= S, right_numbers(As, Ss, R).
- exact_try(Attempt, Secret, R) :- key(Attempt),
- key(Secret),
- right_numbers(Attempt, Secret, R).
- lazy_try(Attempt, Secret, R) :- key(Attempt),
- key(Secret),
- intersection(Attempt, Secret, Intersection),
- length(Intersection, R).
- try(Attempt, Secret, R1, R2) :- exact_try(Attempt, Secret, R1),
- lazy_try(Attempt, Secret, R2).
- crack(Secret) :- try([6,8,2], Secret, 1, 1),
- try([6,1,4], Secret, 0, 1),
- try([2,0,6], Secret, 0, 2),
- try([7,3,8], Secret, 0, 0),
- try([7,8,0], Secret, 0, 1).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement