/* Omelet problem in Picat. From http://www.sci.brooklyn.cuny.edu/~zhou/prolog_contest/pc2012.txt """ Solutions in B-Prolog for the 2012 Prolog Programming Contest Team members: Christian Theil Have, Nuno Lopes, and Neng-Fa Zhou """ This Picat model was created by Hakan Kjellerstrand, hakank@gmail.com See also my Picat page: http://www.hakank.org/picat/ */ % import util. % import cp. main => go. go => omelet(1,1,D11), writeln(d11=D11), omelet(2,1,D21), writeln(d21=D21), omelet(2,7,D27), writeln(d27=D27), omelet(3,7,D37), writeln(d37=D37), nl. %% 4. omelet.pl % Example queries: % ?- omelet(1,1,D) % D = 1 % ?- omelet(2,1,D) % D=1 % ?- omelet(2,7,D) % D=4 % ?- omelet(3,7,D) % D=3 table (+,+,min) omelet(_,1,X) => X=1. omelet(1,H,H2) => H2=H. omelet(N,H,D) => N>1, H>1, between(1,H,L), N1 = N-1, L1 = L-1, omelet(N1,L1,D1), L2 = H-L, omelet(N1,L2,D2), D = max(D1,D2)+1.