Thanks, that's huge improvement. On Tue, Sep 13, 2011 at 3:00 AM, Joachim Schimpf <jschimpf_at_coninfer.com> wrote: > 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, > Joachim > > ------------------------------------------------------------------------------ > BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA > Learn about the latest advances in developing for the > BlackBerry® mobile platform with sessions, labs & more. > See new tools and technologies. Register for BlackBerry® DevCon today! > http://p.sf.net/sfu/rim-devcon-copy1 > _______________________________________________ > ECLiPSe-CLP-Users mailing list > ECLiPSe-CLP-Users_at_lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/eclipse-clp-users >Received on Tue Sep 13 2011 - 00:12:03 CEST
This archive was generated by hypermail 2.2.0 : Thu Feb 02 2012 - 02:31:58 CET