Professional Web Applications Themes

Change coin types... subtract if available? help! - Coldfusion - Advanced Techniques

ok guys, this one is tricky... put on your nerd caps :-) the nerds here at the office cant figure it out........ ok, I built a change calculator.. I gave the change codenames just out of our own reference system here at work.... but the values go something like this.... diamond = 20 cents ruby=10 cents gold=5cents and penny=1 cent.... heres the issue... each of our users in our database have a field for diamond, ruby, gold, penny... now depending on certain actions, they may acquire more of one than the other, it doesn't balance so that for instance you ...

  1. #1

    Default Change coin types... subtract if available? help!

    ok guys,
    this one is tricky... put on your nerd caps :-) the nerds here at the
    office cant figure it out........ ok, I built a change calculator.. I gave the
    change codenames just out of our own reference system here at work.... but the
    values go something like this.... diamond = 20 cents ruby=10 cents gold=5cents
    and penny=1 cent....

    heres the issue... each of our users in our database have a field for diamond,
    ruby, gold, penny... now depending on certain actions, they may acquire more of
    one than the other, it doesn't balance so that for instance you found two
    rubys, you would get a diamond... no, you would have two rubies..

    have a change calculator that finds the total amount to subtract.. for
    instance.. I want to find out how to seperate out the number 93... that would
    be 4 diamonds, 1 ruby, 0 gold and 3 silver... now I want to take that value out
    of the users "stash" in the database.... heres the problem I am facing.

    What if, the user only has ONE diamond and we need to take out four?
    Obviously we have a checksum function built in to make sure we are not
    exceeding the total, but for instance... what if the user has 18 rubies, and
    only 2 diamonds?

    So what I need help with is, what is the best way to most efficiently take out
    the total amount from our fields when some of the fields are lacking sufficient
    amounts?

    Thanks in advance guys, you are always the best!

    johnegbert Guest

  2. #2

    Default Re: Change coin types... subtract if available? help!

    Hmmmn. Calling me the N-word and you are not (A) my mother or (B) a close
    friend.

    Also, this question smacks of someone's homework assignment and is not really
    CF related.

    Anyway, the "best", "most efficient" way to solve this problem is to use a
    quantum computer.
    Build yourself one of those and you'll be able to solve the change question in
    a single operation!

    -- Nerd apprentice


    MikerRoo Guest

  3. #3

    Default Re: Change coin types... subtract if available? help!

    What if, the user only has ONE diamond and we need to take out four?
    1 - 4 = -3
    The run a check to annul anything less than zero.

    seperate out the number 93... that would be 4 diamonds, 1 ruby, 0 gold and 3
    silver... now
    Your problem is poorly defined. You use silver whereas your basis is
    (diamond, ruby, gold, penny), which doesn't include silver. Even if we correct
    for that, and assume you meant penny , the problem definition remains
    poor.

    You seem to require unique representations, yet your basis is not unique.
    To see that, take (diamond, ruby, gold, penny), respective weights 20, 10, 5,
    1.
    93 = (4, 1, 0, 3) = (0, 0, 18, 3) = (0, 0, 0, 93) = ... etc.

    I would instead use the popular binary system, which is based on the weights
    1, 2, 4, 8, 16, 32, ... and so on. Using it, you can represent any positive
    integer
    in one, and exactly one, way. However, here the weights are represented, in
    order of magnitude, from right to left. Every representation consists of just
    0s and 1s. There are even well-known techniques for subtraction and for
    representing negative numbers without using the negative sign.

    Example: 93 = (1,0, 1, 1, 1, 0, 1).
    That is 93=1x64+0x32+1x16+1x8+1x4+0x2+1x1



    BKBK Guest

  4. #4

    Default Re: Change coin types... subtract if available? help!

    Step 1:
    Total all of the users change and convert to one total amount in pennies. (3
    diamonds + 10 rubies = 160 pennies)
    Step 2:
    Convert amount to subtract into pennies also
    Step 3:
    Verify that user total is greater or equal to amount to subtract.
    Step 4:
    Subract amount to subtract from user total
    Step 5:
    P the remainder of the user total back into the various codenames/
    diamonds etc.

    hatethisnamegame Guest

  5. #5

    Default Re: Change coin types... subtract if available? help!

    ok,
    just to clear up a few things.. the reason we are going by silver is because
    the application is based on a treasure hunt game, so its not based on real
    monetary value. .i have assigned a silver coin the value of 1...

    hatethisnamegame ... this is as close to the idea that I have gotten, i have
    already kind of built something along those lines, however, we want to keep it
    where they retain their original stats as much as possible.. think of it kind
    of like carrying around a treasure chest to pay for items...
    if you were asked to pay for 300 treasure points worth of stuff and you had
    850 treasure points, you wouldnt give the person you are buying the 300 TP
    worth of stuff all 850 and then have them p it back out.. you would merely
    take out the amount you need to pay with and that would be that....

    thats what i am going for here. i need to merely take out the amount based on
    what the user has available and not rearrange what he has left.

    thanks in advance for all help guys, I know we will figure it out!!!
    much love.... je

    johnegbert Guest

  6. #6

    Default Re: Change coin types... subtract if available? help!

    > if you were asked to pay for 300 treasure points worth of stuff and you had
    850 treasure 
    all 850 and 
    need to pay 

    Then this algorithm may help:

    1) Run a check to annul anything less than zero.

    2) Assume the chips are (diamond, ruby, gold, penny) as before, having
    respective
    weights 20, 10, 5, 1. You wish to find how to decompose an amount A
    into change. Then start with the chip of highest weight(diamond) and work
    your way downwards.
    (i) To obtain the number of diamond chips in the change, divide the
    amount A
    by 20. Let the result be S1and the remainder R1.
    (ii) To obtain the number of ruby chips, divide R1 by 10. Let the result be
    S2 and the remainder R2.
    (i) To obtain the number of gold chips in the change, divide R2 by 5.
    Let the result be S3 and the remainder R3.

    Then the decomposition of the amount A into change is
    S1 diamond chips
    S2 ruby chips
    S3 gold chips
    R3 penny chips.

    To illustrate with your original example of 93,

    (i) 93/20 = 4 remainder 13 (S1=4, R1=13)
    (ii)13/10 = 1 remainder 3 (S2=1, R2=3)
    (iii)3/5 = ) remainder 3 (S3=0, R3=3)

    Result:
    4 diamond chips
    1 ruby chip
    0 gold chips
    3 penny chips.









    BKBK Guest

  7. #7

    Default Re: Change coin types... subtract if available? help!

    First, you need a total function to find out if the user has enough $$ to buy
    whatever it is they want to buy:

    Total $$ = # diamonds * 20 + # rubies * 10 + # gold * 5 + # pennies

    assuming user's Total $$ is greater than the cost of the item:

    remaining cost = total cost;
    # diamonds = remaining cost / 20;
    leftover diamonds = user's diamonds - # diamonds;
    if leftover diamonds > 0 {
    user's diamonds = leftover diamonds;
    remaining cost = (remaining cost mod 20);
    } else {
    user's diamonds = 0;
    remaining cost = (remaining cost mod 20) + (user's diamonds * -2);
    }

    # rubies = remaining cost / 10;
    leftover rubies = user's rubies - # rubies;
    if leftover rubies > 0 {
    user's rubies = leftover rubies;
    remaining cost = (remaining cost mod 10);
    } else {
    user's rubies = 0;
    remaining cost = (remaining cost mod 10) + (user's rubies * -2);
    }

    # gold = remaining cost / 5;
    leftover gold = user's gold - # gold;
    if leftover gold > 0 {
    user's gold = leftover gold;
    remaining cost = (remaining cost mod 5);
    } else {
    user's gold = 0;
    remaining cost = (remaining cost mod 5) + (user's gold * -5);
    }

    # pennies = remaining cost;
    leftover pennies = user's pennies - # pennies;
    if leftover pennies > 0 {
    user's pennies = leftover pennies;
    } else {
    // throw error. we didn't have enough $$ to buy this item (that's why we
    have the first if test.)
    }


    Kronin555 Guest

  8. #8

    Default Re: Change coin types... subtract if available? help!

    Total $$ = # diamonds * 20 + # rubies * 10 + # gold * 5 + # pennies

    Shouldn't this be

    Total $$ GTE ... etc. ?

    BKBK Guest

  9. #9

    Default Re: Change coin types... subtract if available? help!

    Total $$ = # diamonds * 20 + # rubies * 10 + # gold * 5 + # pennies

    1) T = 20w + 10x + 5y + z doesn't have a unique solution, which I think is a
    requirement.
    Otherwise the problem is ill-defined.

    2) Shouldn't that be

    Total $$ GTE ... etc. ?


    BKBK Guest

  10. #10

    Default Re: Change coin types... subtract if available? help!

    Sorry, for clarification (and correction), replace these lines in my post:
    Total $$ = # diamonds * 20 + # rubies * 10 + # gold * 5 + # pennies

    assuming user's Total $$ is greater than the cost of the item:

    with these lines:
    Total User $$ = # user diamonds * 20 + # user rubies * 10 + # user gold * 5 +
    # user pennies

    Assuming total user $$ is greater than or equal to the cost of the item:

    The rest of my post still stands.

    Kronin555 Guest

Similar Threads

  1. How to subtract in a calculation in Acrobat Pro 9
    By sander_wessel@adobeforums.com in forum Adobe Acrobat Macintosh
    Replies: 9
    Last Post: March 26th, 09:07 AM
  2. subtract 3d objects
    By braddini in forum Macromedia Director 3D
    Replies: 2
    Last Post: May 29th, 09:24 PM
  3. Replies: 4
    Last Post: December 27th, 06:45 AM
  4. 30 day, 60 day, 90 day, subtract from Order Amount
    By Dave in forum Microsoft Access
    Replies: 2
    Last Post: September 4th, 01:54 AM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139