Contribution on Puzzlet #017
From: Denis Borris [borrisd@ca.inter.net]
In this one, only 2 loops required, since one variable can be
calculated from the other 2. Your 3-looper has 840 combinations;
this one has 19 only:
(a,b,c = quantities, x,y,z = weights; @ = mod in Ubasic)
100 For a = 1 to 5 : x = 17 * a
110 For b = 1 to int((100 - x - 3)/11) : y = 11 * b
120 z = 100 - x - y
130 If z @ 3 <> 0 then 150 else c = z / 3
140 Print a;x;b;y;c;z
150 next b
160 next c
Output:
1 17 1 11 24 72
1 17 4 44 13 39
1 17 7 77 2 6
2 34 3 33 11 33
3 51 2 22 9 27
4 68 1 11 7 21
I know it matters very little in such a small looper;
however, it's a good thing to keep in mind, when larger
loopers are required: as example, looping 10 variables
from 0 to 9 versus looping 9 and calculating the 10th
saves 10^10 - 10^9 = 9 billion loops.
| Site design/maintenance: Dave Ellis | E-mail
me! |
Last Updated: February 22nd, 2004. |