Advertisement
Guest User

Reibello AoC 9

a guest
Dec 9th, 2016
330
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.03 KB | None | 0 0
  1. #aoc2016_9a.py
  2. input_file_object = open("aoc16_input_9a.txt")
  3. input_as_string = input_file_object.read()
  4. input_file_object.close()
  5.  
  6. decompressed=[]
  7.  
  8. def findRightParen(current, left_index):
  9.     for r in range(left_index+4, len(current)):
  10.         if current[r] == ')':
  11.             return r
  12.  
  13. #(AxB) take next A char and repeat B times
  14.  
  15. #input_as_string = input_as_string.replace(" ","")
  16. #input_as_string = input_as_string.replace("\\n","")
  17.  
  18. example0 = 'ADVENT'
  19. example1 = "A(1x5)BC"
  20. example2 = '(3x3)XYZ'
  21.  
  22. exampleb = '(25x3)(3x3)ABC(2x3)XY(5x2)PQRSTX(18x9)(3x2)TWO(5x7)SEVEN'
  23. '''
  24. x = 0
  25. current = input_as_string
  26.  
  27. while x < len(current):
  28.    if current[x] == '(':
  29.        y = findRightParen(current,x)
  30.        marker = current[x+1:y]
  31.        marker_split = marker.split('x')
  32.        #print(marker)
  33.        characters = int(marker_split[0])
  34.        repetitions = int(marker_split[1])
  35.        temp = current[y+1:(y+1+characters)] * repetitions
  36.        decompressed.append(temp)
  37.        x+=(len(marker) + characters + 2)
  38.    else:
  39.        decompressed.append(current[x])
  40.        x+=1
  41.  
  42. '''
  43.  
  44. def recursiveExpansion(some_string):
  45.     if '(' not in some_string:
  46.         return len(some_string)
  47.    
  48.     for x in range(len(some_string)):
  49.         if some_string[x] !='(':
  50.             pass
  51.         else:
  52.             y = findRightParen(some_string, x)
  53.             marker = some_string[x+1:y]
  54.             marker_split = marker.split('x')
  55.             #print(x,y,marker,marker_split)
  56.             #print(some_string)
  57.             characters = int(marker_split[0])
  58.             repetitions = int(marker_split[1])
  59.             #print(some_string[:x])
  60.             #print()
  61.             #print(some_string[y+1:y+characters+1])
  62.             #print()
  63.             #print(some_string[y+characters+1:])
  64.            
  65.             return (recursiveExpansion(some_string[:x]) +
  66.                     (recursiveExpansion(some_string[y+1:y+characters+1]) * repetitions) +
  67.                     recursiveExpansion(some_string[(y+characters+1):]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement