Vivek Balaraman wrote: > Given an IC constraint > > A #= B * C > where > A #::[0..50], > B #::[0..5], > C#::[0..10] > > (var(A)->indomain(A);true), > (var(B)->indomain(B);true), > (var(C)->indomain(C);true). You don't need the var tests, and you can use labeling/1 instead of a sequence of indomains. > > When any two of A,B,C are grounded, then there is no problem. However, > there may be times when only one of these is grounded (say C has the > value 5. What we want is to be able to generate all possible solutions > by labeling the other two variables. However I get a type error when I > try to do so. What you describe just works: ?- A #:: [0..50], B #:: [0..5], C #:: [0..10], A #= B*C, labeling([A,B,C]). A = 0 B = 0 C = 0 Yes (0.00s cpu, solution 1, maybe more) ... A = 50 B = 5 C = 10 Yes (0.20s cpu, solution 66) If you still have a problem, show us your exact code. -- JoachimReceived on Wed Aug 08 2007 - 12:50:32 CEST
This archive was generated by hypermail 2.3.0 : Wed Sep 25 2024 - 15:13:20 CEST