Mercurial > hg > problem6
view optim.py @ 3:c683f80bc858 draft
parseinput: also save the maximum possible profit for each machine
author | Jordi Gutiérrez Hermoso <jordigh@octave.org> |
---|---|
date | Tue, 10 Mar 2015 21:17:54 -0400 (2015-03-11) |
parents | 3632502b8af1 |
children | 14c8b6dad88a |
line wrap: on
line source
#!/usr/bin/env python from collections import namedtuple Machine = namedtuple("Machine", ["day", "buy", "sell", "profit", "maxprofit"]) Case = namedtuple("Case", ["machines", "days", "capital"]) def parseinput(fname): """ Parse the input file, forget about input validation """ cases = [] with open(fname) as f: while True: header = [int(x) for x in f.readline().split()] if header == [0, 0, 0]: return cases N = header[0] case = Case([], header[1], header[2]) for i in range(0, N): machine = Machine(*[int(x) for x in f.readline().split()], maxprofit = None) # Maximum profit possible from each machine maxprofit = ((case.days - machine.day)*machine.profit - machine.buy + machine.sell) machine = machine._replace(maxprofit = maxprofit) case.machines.append(machine) cases.append(case) def main(): cases = parseinput("input.txt") for case in cases: print "Next case:", case["header"] for machine in case["machines"]: print machine if __name__ == "__main__": main()