Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- DEBUG=True
- def init_state():
- return {'A': 4, 'B': 8, 'C': 30}
- def debug(*args):
- if DEBUG:
- print(args)
- def damage(state, target, dam, src):
- debug(state,target,dam,src)
- assert target in state
- debug(src,'hits',target,'for',dam)
- state[target] -= dam
- if state[target] <= 0:
- debug(target,'is destroyed.')
- del state[target]
- def flamewaker(state):
- for i in range(2):
- damage(state, random.sample(state.keys(),1)[0], 1, 'Flamewaker')
- def test(N, targets, destroyed):
- c = 0
- for i in range(N):
- debug('Test',i)
- s = init_state()
- for target, dam, src in targets:
- damage(s, target, dam, src)
- flamewaker(s)
- if all(d not in s for d in destroyed):
- c += 1
- debug('subtotal',i,c,s)
- debug('')
- return float(c)/N
- DEBUG=False
- N = 100000
- print('a)',test(N, [('B',6,'Fireball')], 'B'))
- print('b)',test(N, [('A',3,'Frostbolt')], 'A'))
- print('c)',test(N, [('A',3,'Frostbolt'),('B',6,'Fireball')], 'AB'))
- print('d)',test(N, [('B',6,'Fireball'),('A',3,'Frostbolt')], 'AB'))
Advertisement
Add Comment
Please, Sign In to add comment