# Setup c-->from importlib import reload c-->import q1solution c-->reload(q1solution) c-->from q1solution import solve_root, by_diversity, by_size, by_party, registration_by_state c-->import math # Test solve_root c-->rooter = solve_root( (lambda x : 3*x**4 + 3*x**3 - 1.2), .00001 ) c-->r = rooter(0,1) e-->math.isclose(r,0.6265144348144531,abs_tol=.0001)-->True e-->rooter.iterations-->17 c-->r = rooter(-1,-2) e-->math.isclose(r,-1.2201805114746094,abs_tol=.0001)-->True e-->rooter.iterations-->17 c-->tooter = solve_root(lambda x : 23*math.sqrt(x) - (10*math.log2(x)**2+1100), .0001) c-->r = tooter(10000,20000) e-->math.isclose(r,18197.17515259981,abs_tol=.001)-->True ==-->[tooter.iterations, tooter.f(1)]-->[27, -1077.0] ^-->tooter(20000,20000)-->AssertionError ^-->tooter(10000,10000)-->AssertionError ^-->solve_root(lambda x : x, 0)-->AssertionError ^-->solve_root(lambda x : x, -.001)-->AssertionError # Test by_diversity c-->db1 = {1: {'d': 15, 'i': 15, 's': 15}, 2: {'d': 12, 's': 8}, 3: {'d': 10, 'i': 30, 'l': 20, 's': 22}, 4: {'d': 30, 'l': 20, 's': 30}, 5: {'i': 15, 'l': 15,'s': 15}} c-->db2 = {1000: {'d': 50, 'i': 27,'s': 18, 'x': 46}, 2000: {'d': 32, 's': 58},3000: {'d': 20, 'i': 30, 'l': 20, 's': 22}, 4000: {'d': 40, 'i': 20, 'l': 40, 's': 39, 'x': 46}, 5000: {'d': 20, 'i': 30, 'l': 20, 'x': 15}, 6000: {'i': 30, 'x': 46}, 7000: {'l': 20}, 8000: {'i': 15, 'l': 15, 's': 15}} e-->by_diversity(db1)-->[(3, 4), (1, 3), (4, 3), (5, 3), (2, 2)] e-->by_diversity(db2)-->[(4000, 5), (1000, 4), (3000, 4), (5000, 4), (8000, 3), (2000, 2), (6000, 2), (7000, 1)] # Test by_size c-->db1 = {1: {'d': 15, 'i': 15, 's': 15}, 2: {'d': 12, 's': 8}, 3: {'d': 10, 'i': 30, 'l': 20, 's': 22}, 4: {'d': 30, 'l': 20, 's': 30}, 5: {'i': 15, 'l': 15,'s': 15}} c-->db2 = {1000: {'d': 50, 'i': 27,'s': 18, 'x': 46}, 2000: {'d': 32, 's': 58},3000: {'d': 20, 'i': 30, 'l': 20, 's': 22}, 4000: {'d': 40, 'i': 20, 'l': 40, 's': 39, 'x': 46}, 5000: {'d': 20, 'i': 30, 'l': 20, 'x': 15}, 6000: {'i': 30, 'x': 46}, 7000: {'l': 20}, 8000: {'i': 15, 'l': 15, 's': 15}} e-->by_size(db1)-->[3, 4, 1, 5, 2] e-->by_size(db2)-->[4000, 1000, 3000, 2000, 5000, 6000, 8000, 7000] # Test by_party c-->db1 = {1: {'d': 15, 'i': 15, 's': 15}, 2: {'d': 12, 's': 8}, 3: {'d': 10, 'i': 30, 'l': 20, 's': 22}, 4: {'d': 30, 'l': 20, 's': 30}, 5: {'i': 15, 'l': 15,'s': 15}} c-->db2 = {1000: {'d': 50, 'i': 27,'s': 18, 'x': 46}, 2000: {'d': 32, 's': 58},3000: {'d': 20, 'i': 30, 'l': 20, 's': 22}, 4000: {'d': 40, 'i': 20, 'l': 40, 's': 39, 'x': 46}, 5000: {'d': 20, 'i': 30, 'l': 20, 'x': 15}, 6000: {'i': 30, 'x': 46}, 7000: {'l': 20}, 8000: {'i': 15, 'l': 15, 's': 15}} e-->by_party(db1)-->['s', 'd', 'i', 'l'] e-->by_party(db2)-->['d', 'x', 'i', 's', 'l'] # Test registration_by_state c-->db1 = {1: {'d': 15, 'i': 15, 's': 15}, 2: {'d': 12, 's': 8}, 3: {'d': 10, 'i': 30, 'l': 20, 's': 22}, 4: {'d': 30, 'l': 20, 's': 30}, 5: {'i': 15, 'l': 15,'s': 15}} c-->db2 = {1000: {'d': 50, 'i': 27,'s': 18, 'x': 46}, 2000: {'d': 32, 's': 58},3000: {'d': 20, 'i': 30, 'l': 20, 's': 22}, 4000: {'d': 40, 'i': 20, 'l': 40, 's': 39, 'x': 46}, 5000: {'d': 20, 'i': 30, 'l': 20, 'x': 15}, 6000: {'i': 30, 'x': 46}, 7000: {'l': 20}, 8000: {'i': 15, 'l': 15, 's': 15}} ==-->registration_by_state(db1,{'CA': {1,3}, 'WA': {2,4,5}})-->{'CA': {'d': 25, 'i': 45, 's': 37, 'l': 20}, 'WA': {'d': 42, 's': 53, 'l': 35, 'i': 15}} ==-->registration_by_state(db2,{'CA' : {1000,3000,7000}, 'WA': {2000,4000,5000,8000}, 'OR' : {6000}, 'NV' : {}})-->{'CA': {'d': 70, 'i': 57, 's': 40, 'x': 46, 'l': 40}, 'WA': {'d': 92, 's': 112, 'i': 65, 'l': 75, 'x': 61}, 'OR': {'i': 30, 'x': 46}}