Changeset 282 for trunk

Show
Ignore:
Timestamp:
04/27/09 22:33:14 (3 years ago)
Author:
ocjhb
Message:

better version

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/sandbox/jhb/oc2/coinsplitting.py

    r281 r282  
    55    i = 0 
    66    while sum(tokens)<amount: 
     7        if i>=len(denominations): 
     8            i = len(denominations) -1 
    79        d = denominations[i] 
    810        rest = amount - sum(tokens) 
     
    1113            tokens.append(1) 
    1214            i +=1 
    13         elif d <= rest-d: 
     15        elif d <= rest-d + denominations[i-1]: 
    1416            #print 'append %s' % d 
    1517            tokens.append(d) 
    1618            i +=1 
    17         elif d > rest -d: 
     19        elif d > rest -d + denominations[i-1]: 
    1820            i -= 1 
    1921    return tokens             
     
    2931    return picked             
    3032 
    31 denominations = [1,2,5,10,20,50,100,200,500]     
     33dl = [[1,2,5,10],[1,3,9,27],[1,3,5,7,11,13,17,19,23],[1,17,33]] 
    3234problems = 0 
    33 for i in range(1,max(denominations)+1): 
    34     print 'Tokenize %i, ' % i, 
    35     tokens = tokenizer(denominations,i) 
    36     print 'tokens %s (%s)' % (tokens,sum(tokens)) 
    37      
    38     for j in range(1,i+1): 
    39         picked = testspend(tokens,j) 
    40         if sum(picked) != j: 
    41             problems += 1 
    42             print 'testing: %s, picked %s, sum %s, worked: %s' % (j,picked,sum(picked),sum(picked)==j) 
     35for denominations in dl: 
     36    print 'DENOMINATIONS %s' % denominations 
     37    print 
     38    for i in range(1,max(denominations)*10): 
     39        print 'Tokenize %i, ' % i, 
     40        tokens = tokenizer(denominations,i) 
     41        print 'tokens %s (%s)' % (tokens,sum(tokens)) 
     42        if sum(tokens) != i: 
     43            print 'fuckup' 
     44            break; 
     45        for j in range(1,i+1): 
     46            picked = testspend(tokens,j) 
     47            if sum(picked) != j: 
     48                problems += 1 
     49                print 'testing: %s, picked %s, sum %s, worked: %s' % (j,picked,sum(picked),sum(picked)==j) 
    4350print 
    4451print