Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

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


  • Prev by Date: Re: FileName Widget
  • Next by Date: Re: Table for FindInstance solutions
  • Previous by thread: Table for FindInstance solutions
  • Next by thread: Re: Table for FindInstance solutions