Advertisement
Guest User

Reibello Day 7 Aoc16

a guest
Dec 6th, 2016
522
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.29 KB | None | 0 0
  1. #aoc2016_7a.py
  2. input_file_object = open("aoc16_input_7a.txt")
  3. input_as_string = input_file_object.read()
  4. input_file_object.close()
  5.  
  6. def noDupes(some_list):
  7.     temp = []
  8.     for x in some_list:
  9.         if x not in temp:
  10.             temp.append(x)
  11.     return temp
  12.  
  13. input_separated = input_as_string.split('\n')
  14.  
  15. for i in range(len(input_separated)):
  16.     input_separated[i] = input_separated[i].replace('[',']')
  17.     input_separated[i] = input_separated[i].split(']')
  18.    
  19. #input_separated[i][1] will be the hypernet sequence
  20.  
  21. hypernet_valid = []
  22. hypernet_invalid = []
  23. complete_valid = []
  24.  
  25. for i in range(len(input_separated)):
  26.     #This for loop goes through the list of instructions
  27.     for j in range(1,len(input_separated[i]), 2):
  28.         #This for loop goes through the hypernet instructions
  29.         for k in range((len(input_separated[i][j])-3)):
  30.             #This for loop goes through the actual characters in the HNI
  31.             if input_separated[i][j][k] == input_separated[i][j][k+3] and input_separated[i][j][k+1] == input_separated[i][j][k+2] and input_separated[i][j][k] != input_separated[i][j][k+1]:
  32.                 #If it finds an ABBA sequence
  33.                 hypernet_invalid.append(input_separated[i])
  34.                 break
  35.         else:
  36.             hypernet_valid.append(input_separated[i])
  37.  
  38. hypernet_valid = noDupes(hypernet_valid)
  39. hypernet_invalid = noDupes(hypernet_invalid)
  40.  
  41. for i in range(len(hypernet_invalid)):
  42.     if hypernet_invalid[i] in hypernet_valid:
  43.         hypernet_valid.remove(hypernet_invalid[i])
  44.        
  45. for i in range(len(hypernet_valid)):
  46.     #This for loop goes through options with a valid hypernet sequences
  47.     for j in range(0, len(hypernet_valid[i]), 2):
  48.         #This for loop goes through the non-hypernet sequences in each line
  49.         for k in range((len(hypernet_valid[i][j])-3)):
  50.             #This for loop goes through the actual characters
  51.             if hypernet_valid[i][j][k] == hypernet_valid[i][j][k+3] and hypernet_valid[i][j][k+1] == hypernet_valid[i][j][k+2] and hypernet_valid[i][j][k] != hypernet_valid[i][j][k+1]:
  52.                 #ABBA Sequence found
  53.                 complete_valid.append(hypernet_valid[i])
  54.                 continue
  55.  
  56.  
  57. complete_valid = noDupes(complete_valid)
  58. print(len(complete_valid))
  59. print("Searching for Super Secret Listening")
  60.  
  61. ssl_valid = []
  62. counter = 0
  63.  
  64. for i in range(len(input_separated)):
  65.     #
  66.     for j in range(0,len(input_separated[i]),2):
  67.         #only searches supernet
  68.         for k in range((len(input_separated[i][j])-2)):
  69.             if input_separated[i][j][k] == input_separated[i][j][k+2] and input_separated[i][j][k] != input_separated[i][j][k+1]:
  70.                 #ABA sequence found
  71.                 temp = []
  72.                 temp = input_separated[i][j][k:k+3]
  73.                 aba = ''.join(temp)
  74.                 temp = []
  75.                 temp = [aba[1],aba[0],aba[1]]
  76.                 bab = ''.join(temp)
  77.                 for m in range(1, len(input_separated[i]),2):
  78.                     #
  79.                     if bab in input_separated[i][m]:
  80.                         ssl_valid.append(input_separated[i])
  81.                         counter += 1
  82.                         continue
  83.  
  84. ssl_valid = noDupes(ssl_valid)
  85.  
  86. print(len(ssl_valid))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement