Guest User

Fgt

a guest
Apr 15th, 2016
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1. import random
  2.  
  3. DEBUG=True
  4.  
  5. def init_state():
  6. return {'A': 4, 'B': 8, 'C': 30}
  7.  
  8. def debug(*args):
  9. if DEBUG:
  10. print(args)
  11.  
  12. def damage(state, target, dam, src):
  13. debug(state,target,dam,src)
  14. assert target in state
  15. debug(src,'hits',target,'for',dam)
  16. state[target] -= dam
  17. if state[target] <= 0:
  18. debug(target,'is destroyed.')
  19. del state[target]
  20.  
  21. def flamewaker(state):
  22. for i in range(2):
  23. damage(state, random.sample(state.keys(),1)[0], 1, 'Flamewaker')
  24.  
  25. def test(N, targets, destroyed):
  26. c = 0
  27. for i in range(N):
  28. debug('Test',i)
  29. s = init_state()
  30. for target, dam, src in targets:
  31. damage(s, target, dam, src)
  32. flamewaker(s)
  33. if all(d not in s for d in destroyed):
  34. c += 1
  35. debug('subtotal',i,c,s)
  36. debug('')
  37. return float(c)/N
  38.  
  39. DEBUG=False
  40. N = 100000
  41. print('a)',test(N, [('B',6,'Fireball')], 'B'))
  42. print('b)',test(N, [('A',3,'Frostbolt')], 'A'))
  43. print('c)',test(N, [('A',3,'Frostbolt'),('B',6,'Fireball')], 'AB'))
  44. print('d)',test(N, [('B',6,'Fireball'),('A',3,'Frostbolt')], 'AB'))
Advertisement
Add Comment
Please, Sign In to add comment