Date: Apr 16, 2013 4:21 AM
Author: Bob Hanlon
Subject: Re: Turning a Sequence into a List?
Just put list brackets around the sequence.

minCoin[sol_List]:=

Module[{m=Min[(q+d+n+p)/.sol]},

Select[sol,((q+d+n+p)/.#)==m&][[1]]]

v=Range[52,53];

sol={Reduce[

25q+10d+5n+p==#&&0<=p<5&&

0<=n<2&&0<=d<3&&0<=q<4,

{q,d,n,p},Integers]//ToRules}&/@v;

minCoin/@sol//Column

{q->2,d->0,n->0,p->2}

{q->2,d->0,n->0,p->3}

Or use Solve rather than Reduce

sol=Solve[

25q+10d+5n+p==#&&0<=p<5&&

0<=n<2&&0<=d<3&&0<=q<4,

{q,d,n,p},Integers]&/@v;

minCoin/@sol//Column

{q->2,d->0,n->0,p->2}

{q->2,d->0,n->0,p->3}

Bob Hanlon

On Tue, Apr 16, 2013 at 12:35 AM, Rob <rob@piovere.com> wrote:

> Hello, I'm playing with a problem with minimum coins to make change.

> Here's a problem spot where I look at ways to make up 52 and 53 cents

> (later I'll use v = Range[1,99].

>

> v=Range[52,53];

> sol=(Reduce[25q+10d+5n+p==# &&0<=p<5 &&0<=n<2 &&0<=d<3

> &&0<=q<4,{q,d,n,p},Integers])& /@v

>

> (* which gives {(q == 1 && d == 2 && n == 1 && p == 2) || (q == 2 && d

> == 0 &&

> n == 0 && p == 2), (q == 1 && d == 2 && n == 1 &&

> p == 3) || (q == 2 && d == 0 && n == 0 && p == 3)} *)

>

> There are two cases for each coin and I need to pick the one with the

> smallest number of coins. But the only way I know to begin that is with

> a list of rules. I can get a Sequence for the first element of the List

> sol but I can't figure how to get the Sequence to a list.

>

> x = (sol[[1]]) // ToRules

> (* Sequence[{q -> 1, d -> 2, n -> 1, p -> 2}, {q -> 2, d -> 0, n -> 0,

> p -> 2}] *)

>

> I've always had problems figuring out what a Sequence is and the HELP

> doesn't really help me. Can someone please suggest how I can use this

> sequence to select the {q,d,n,p} set that has the minimum coin count?

> It's got me stumped. Thanks.

>

> --

>

>

>