Re: Table for FindInstance solutions

*To*: mathgroup at smc.vnet.net*Subject*: [mg114594] Re: Table for FindInstance solutions*From*: Daniel Lichtblau <danl at wolfram.com>*Date*: Thu, 9 Dec 2010 06:02:53 -0500 (EST)

MH 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} > ] > ===== That particular example is also know as the Chicken McNugget problem (from the original sizes available for purchase of for McDonalds' Chicken McNuggets). I guess the Delta Air publisher didn't want a trademark infringement problem. http://en.wikipedia.org/wiki/Coin_problem Mathematica can compute this directly via FrobeniusNumber. To answer your question, you could form the table as: Table[Flatten[{d, ({s, n, t} /. FindInstance[ 6*s + 9 *n + 20*t == d && s >= 0 && n >= 0 && t >= 0, {s, n, t}, Integers]) /. s | n | t -> ""}], {d, 1, 20, 1}] Customary caveats: (1) Generally a bad idea to start variable names with capitals. (2) Always a bad idea if the variable is N, since that is a Mathematica built-in function. Daniel Lichtblau Wolfram Research