def step1(dres, aloot, potential):
again = False
ndres = {}
if len(dres) > 0:
avgloot = int(potential / len(dres))
for r in dres:
if dres[r] <= avgloot:
potential -= dres[r]
aloot[r] += dres[r]
again = True
else:
ndres[r] = dres[r]
return (ndres, aloot, potential, again)
def calculate_loot(dres, potential):
aloot = {'wood':0, 'iron':0, 'wheat':0, 'gold':0}
(dres, aloot, potential, again) = step1(dres, aloot, potential)
while again:
(dres, aloot, potential, again) = step1(dres, aloot, potential)
if len(dres) > 0:
avgloot = int(potential / len(dres))
for r in dres:
aloot[r] += avgloot
return aloot
potential = 250
for dres in [
{'wood':100, 'iron':25, 'wheat':76, 'gold':50000},
{'wood':2500, 'iron':2500, 'wheat':5000, 'gold':5000 },
{'wood':100, 'iron':0, 'wheat':1, 'gold':0 },
{'wood':0, 'iron':0, 'wheat':0, 'gold':50000}
]:
print(dres)
print(calculate_loot(dres, potential))
print(' ')
ZGVmIHN0ZXAxKGRyZXMsIGFsb290LCBwb3RlbnRpYWwpOgoKICAgIGFnYWluID0gRmFsc2UKCiAgICBuZHJlcyA9IHt9CgogICAgaWYgbGVuKGRyZXMpID4gMDoKCiAgICAgICAgYXZnbG9vdCA9IGludChwb3RlbnRpYWwgLyBsZW4oZHJlcykpCgogICAgICAgIGZvciByIGluIGRyZXM6CiAgICAgICAgICAgIGlmIGRyZXNbcl0gPD0gYXZnbG9vdDoKICAgICAgICAgICAgICAgIHBvdGVudGlhbCAtPSBkcmVzW3JdCiAgICAgICAgICAgICAgICBhbG9vdFtyXSArPSBkcmVzW3JdCiAgICAgICAgICAgICAgICBhZ2FpbiA9IFRydWUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG5kcmVzW3JdID0gZHJlc1tyXQoKICAgIHJldHVybiAobmRyZXMsIGFsb290LCBwb3RlbnRpYWwsIGFnYWluKQoKZGVmIGNhbGN1bGF0ZV9sb290KGRyZXMsIHBvdGVudGlhbCk6CgogICAgYWxvb3QgPSB7J3dvb2QnOjAsICdpcm9uJzowLCAnd2hlYXQnOjAsICdnb2xkJzowfQoKICAgIChkcmVzLCBhbG9vdCwgcG90ZW50aWFsLCBhZ2FpbikgPSBzdGVwMShkcmVzLCBhbG9vdCwgcG90ZW50aWFsKQoKICAgIHdoaWxlIGFnYWluOgogICAgICAgIChkcmVzLCBhbG9vdCwgcG90ZW50aWFsLCBhZ2FpbikgPSBzdGVwMShkcmVzLCBhbG9vdCwgcG90ZW50aWFsKQoKICAgIGlmIGxlbihkcmVzKSA+IDA6CiAgICAgICAgYXZnbG9vdCA9IGludChwb3RlbnRpYWwgLyBsZW4oZHJlcykpCiAgICAgICAgZm9yIHIgaW4gZHJlczoKICAgICAgICAgICAgYWxvb3Rbcl0gKz0gYXZnbG9vdAoKICAgIHJldHVybiBhbG9vdAoKcG90ZW50aWFsID0gMjUwCgpmb3IgZHJlcyBpbiBbCiAgICAgICAgeyd3b29kJzoxMDAsICAnaXJvbic6MjUsICAgJ3doZWF0Jzo3NiwgICAnZ29sZCc6NTAwMDB9LAogICAgICAgIHsnd29vZCc6MjUwMCwgJ2lyb24nOjI1MDAsICd3aGVhdCc6NTAwMCwgJ2dvbGQnOjUwMDAgfSwKICAgICAgICB7J3dvb2QnOjEwMCwgICdpcm9uJzowLCAgICAnd2hlYXQnOjEsICAgICdnb2xkJzowICAgIH0sCiAgICAgICAgeyd3b29kJzowLCAgICAnaXJvbic6MCwgICAgJ3doZWF0JzowLCAgICAnZ29sZCc6NTAwMDB9CiAgICBdOgoKICAgIHByaW50KGRyZXMpCiAgICBwcmludChjYWxjdWxhdGVfbG9vdChkcmVzLCBwb3RlbnRpYWwpKQogICAgcHJpbnQoJyAnKQ==
{'wood': 100, 'wheat': 76, 'gold': 50000, 'iron': 25}
{'wood': 75, 'wheat': 75, 'gold': 75, 'iron': 25}
{'wood': 2500, 'wheat': 5000, 'gold': 5000, 'iron': 2500}
{'wood': 62, 'wheat': 62, 'gold': 62, 'iron': 62}
{'wood': 100, 'wheat': 1, 'gold': 0, 'iron': 0}
{'wood': 100, 'wheat': 1, 'gold': 0, 'iron': 0}
{'wood': 0, 'wheat': 0, 'gold': 50000, 'iron': 0}
{'wood': 0, 'wheat': 0, 'gold': 250, 'iron': 0}