Sergey Dymchenko wrote: > Hi! > > I'm trying to solve this puzzle: http://programmingpraxis.com/2009/11/27/7-11/ > > Here is my very straightforward code: > > :- lib(ic). > solve :- > Sum = 711, > Product = 711, > Prices = [A, B, C, D], > A #> 0, B #> 0, C #> 0, D #> 0, > A + B + C + D #= Sum, > A * B * C * D #= Product * 1000000, > labeling(Prices), > writeln(Prices). > > It works, but it's too slow. > Is there any way to speed it up without being too clever and > explicitly say to ECLiPSe that the prices of the four items must come > from the list of divisors of 711? It is much faster (1.8 instead of 63 seconds on my machine) if you use domain splitting during search, i.e. replace labeling(Prices) with search(Prices, 0, input_order, indomain_split, complete, []) This is probably always a good idea with relatively large domains and convex constraints. Other improvements? Cheers, JoachimReceived on Tue Sep 13 2011 - 00:00:34 CEST
This archive was generated by hypermail 2.3.0 : Wed Sep 25 2024 - 15:13:20 CEST