Esempio n. 1
0
def main():
  # grind to look for errors
  GRINDS = 10000
  MAX_POWER = 20
  for i in xrange(GRINDS):
    power_d = random.randint(0,MAX_POWER-2)
    belt_a = [random.randint(1,1000) for j in xrange(power_d)]
    belt_b = [random.randint(1,1000) for j in xrange(MAX_POWER-2-power_d)]
    h = Handle(belt_a[:], belt_b[:], MAX_POWER)
    max_sum = sum(sorted(belt_a + belt_b, reverse=True)[:2])
    poor_sum_msgs = []
    poor_sum_r = []
    try:
      h.run()
      if (h.sum() < max_sum):
        poor_sum_msgs.append(\
          "%d < %d: %s, %s" % (h.sum(), max_sum, belt_a, belt_b))
        poor_sum_r.append("Report %d" % len(poor_sum_msgs))
        poor_sum_r.append("=====")
        poor_sum_r.extend(h.msgs)
    except:
      print '\n'.join(h.report())
      raise

  print "POOR SUMS @MAX_POWER: (%d of %d)" % (len(poor_sum_msgs), GRINDS)
  for line in poor_sum_msgs[:100]:
    print line
    
#  for line in poor_sum_r[:200]:
#    print line
      
  unittest.main()