Advertisement
Guest User

Untitled

a guest
Dec 7th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.86 KB | None | 0 0
  1. from itertools import permutations
  2. from copy import deepcopy
  3.  
  4. permlist = list(permutations([5, 6, 7, 8, 9]))
  5. maximum = 0
  6.  
  7.  
  8. class Amp:
  9.  
  10.     def __init__(self, phase, inputlist):
  11.         self.i = 0
  12.         self.phase = phase
  13.         self.inputlist = deepcopy(inputlist)
  14.         self.inputlist[inputlist[1]] = phase
  15.         self.i += 2
  16.  
  17.     def amp(self, ampinput):
  18.         while self.i < len(inputlist):
  19.             paramlist = [0] * 5
  20.             n = inputlist[self.i]
  21.             for x in range(4, -1, -1):
  22.                 paramlist[abs(x - 4)] = n // (10 ** x) % 10
  23.             DE = str(paramlist[3]) + str(paramlist[4])
  24.             C = paramlist[2]
  25.             B = paramlist[1]
  26.             A = paramlist[0]
  27.             if DE == '99':
  28.                 return None
  29.             first = inputlist[self.i + 1] if C == 1 else inputlist[inputlist[self.i + 1]]
  30.             if DE == '03':
  31.                 inputlist[inputlist[self.i + 1]] = ampinput
  32.                 self.i += 2
  33.                 continue
  34.             elif DE == '04':
  35.                 self.i += 2
  36.                 return first
  37.             second = inputlist[self.i + 2] if B == 1 else inputlist[inputlist[self.i + 2]]
  38.             if DE == '01':
  39.                 inputlist[inputlist[self.i + 3]] = first + second
  40.                 self.i += 4
  41.                 continue
  42.             elif DE == '02':
  43.                 inputlist[inputlist[self.i + 3]] = first * second
  44.                 self.i += 4
  45.                 continue
  46.             elif DE == '05':
  47.                 if first != 0:
  48.                     self.i = second
  49.                 else:
  50.                     self.i += 3
  51.                 continue
  52.             elif DE == '06':
  53.                 if first == 0:
  54.                     self.i = second
  55.                 else:
  56.                     self.i += 3
  57.                 continue
  58.             elif DE == '07':
  59.                 if first < second:
  60.                     inputlist[inputlist[self.i + 3]] = 1
  61.                 else:
  62.                     inputlist[inputlist[self.i + 3]] = 0
  63.                 self.i += 4
  64.                 continue
  65.             elif DE == '08':
  66.                 if first == second:
  67.                     inputlist[inputlist[self.i + 3]] = 1
  68.                 else:
  69.                     inputlist[inputlist[self.i + 3]] = 0
  70.                 self.i += 4
  71.                 continue
  72.  
  73.  
  74. for permutation in permlist:
  75.     inputlist = [int(el) for el in open("input7.txt", "r").readline().split(',')]
  76.     a = Amp(permutation[0], inputlist)
  77.     b = Amp(permutation[1], inputlist)
  78.     c = Amp(permutation[2], inputlist)
  79.     d = Amp(permutation[3], inputlist)
  80.     e = Amp(permutation[4], inputlist)
  81.     curr = e.amp(d.amp(c.amp(b.amp(a.amp(0)))))
  82.     while curr != None:
  83.         curr = e.amp(d.amp(c.amp(b.amp(a.amp(curr)))))
  84.         if curr > maximum:
  85.             maximum = curr
  86.         else:
  87.             break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement