Advertisement
Guest User

Untitled

a guest
Dec 13th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.00 KB | None | 0 0
  1. from functools import lru_cache
  2. import sys
  3. sys.setrecursionlimit(10000)
  4.  
  5. @lru_cache(maxsize=None)
  6. def reaction(polymer):
  7.     for i in range(0, len(polymer) - 1):
  8.         if polymer[i].casefold() == polymer[i+1].casefold():
  9.             if (polymer[i].islower() and polymer[i+1].isupper()) or (polymer[i].isupper() and polymer[i+1].islower()):
  10.                 return reaction(polymer.replace(polymer[i] + polymer[i + 1], ""))
  11.     return polymer
  12.  
  13. def replaceUnit(polymer, unit):
  14.     return polymer.replace(unit.lower(), "").replace(unit.upper(), "")
  15.  
  16. def main():
  17.     with open("input") as f:
  18.         str_polymer = f.read()
  19.     f.close()
  20.  
  21.     min_len = None
  22.     for unit in [chr(i) for i in range(97, 123)]:
  23.         str_polymer_cleaned = replaceUnit(str_polymer, unit)
  24.         polymer = reaction(str_polymer_cleaned)
  25.  
  26.         min_len = len(polymer) if min_len is None else (len(polymer) if len(polymer) < min_len else min_len)
  27.  
  28.     print("Result: ", min_len)
  29.  
  30.  
  31. if __name__ == '__main__':
  32.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement