Re: Table for FindInstance solutions
- To: mathgroup at smc.vnet.net
- Subject: [mg114583] Re: Table for FindInstance solutions
- From: Ray Koopman <koopman at sfu.ca>
- Date: Thu, 9 Dec 2010 06:00:55 -0500 (EST)
- References: <idnqt7$q8h$1@smc.vnet.net>
On Dec 8, 3:41 am, MH <matthewh... at gmail.com> wrote:
> Hello. I'm trying to display in a table solutions to the equation 6S
> + 9N + 20T = D, where D is an integer allowed to go from 1 to 100. I
> can use FindInstance to find solutions with no problems. What'd I'd
> really like, though, is a table with four columns: one column each for
> D, S, N, and T. The following code gets me close to what I want, but
> every entry in the last three columns is the same. And, every entry
> gives the value for S, N, and T, instead of just the appropriate S or
> N or T value. For example, when D = 71, that row reads
>
> 71 {S -> 7, N -> 1, T -> 1} {S -> 7, N -> 1, T -> 1} {S -> 7, N ->
> 1, T -> 1}.
>
> I can interpret the correct result (7 sixes, 1 nine, and 1 twenty),
> but I'd like the column to read
>
> 71 7 1 1
>
> How can I change that? Incidentally, this problem is from a current
> issue of Delta Airlines' Sky Magazine. The problem asks about a baker
> who sells donuts in boxes of 6, 9, and 20. What's the largest number
> of donuts you CANNOT purchase? I have the solution; I'd just like it
> to look a little bit nicer. :-)
>
> Thanks!
>
> MH
>
> =====
> TableForm[
> Table[
> {D,
> FindInstance[
> 6 S + 9 N + 20 T == D && S >= 0 && N >= 0 && T >= 0, {S, N, T},
> Integers],
> FindInstance[
> 6 S + 9 N + 20 T == D && S >= 0 && N >= 0 && T >= 0, {S, N, T},
> Integers],
> FindInstance[
> 6 S + 9 N + 20 T == D && S >= 0 && N >= 0 && T >= 0, {S, N, T},
> Integers]
> },
> {D, 1, 20, 1}],
> TableHeadings -> {None, {"TOTAL", "BOXES OF 6", "BOXES OF 9",
> "BOXES OF 20"}},
> TableAlignments -> {Center},
> TableSpacing -> {1, 3}
> ]
> =====
TableForm[Table[Flatten@{d, If[#=={},{"","",""},{s,n,t}/.#]&@
FindInstance[6s + 9n + 20t == d && And@@Thread[{s,n,t} >= 0],
{s,n,t},Integers]}, {d, 6,20}], TableHeadings -> {None,
{"\nTOTAL", "BOXES\nOF 6", "BOXES\nOF 9", "BOXES\nOF 20"}},
TableAlignments -> {Center}, TableSpacing -> {1,3}]
BOXES BOXES BOXES
TOTAL OF 6 OF 9 OF 20
6 1 0 0
7
8
9 0 1 0
10
11
12 2 0 0
13
14
15 1 1 0
16
17
18 0 2 0
19
20 0 0 1
To buy 3 more donuts:
If there is a 6 then change it to a 9;
Otherwise change a 9 to two 6's.
So we can buy 6, 9, 12, ... ,
20, 26, 29, ... , and 40, 46, 49, ... .
Putting the three sequences together:
6 9 ... 42 45 48 51 54 ...
26 29 ... 41 44 47 50 53 ...
40 __ 46 49 52 ...
We can buy any number beyond 43, but not 43.