Part one was easy. Part two was much harder today. Fo the most part both parts today were solved by regexes. My solution utilized regex within python to solve the puzzle.
As always my solution is also available on Github.
Once again, both parts were solved with the same script without much modification necessary. This is how I hope most days end up being.
import re # Read in the input file. with open ("input.txt", "r") as myfile: data=myfile.readlines() def get_abas(word): abas =  for i in range(0, len(word) - 2): slc = word[i:i+3] if slc == slc and slc != slc: abas.append(slc) return abas def isTLS(ipaddress): match = re.search(r'\[[^\]]*(\w)(\w)\2\1.*\]', ipaddress) if ((match is not None) and not (match.group(1) == match.group(2))): return False match = re.search(r'(\w)(\w)\2\1', ipaddress) return ((match is not None) and not (match.group(1) == match.group(2))) def isSSL(ipaddress): regex = re.compile('.*\[([a-z]+)\].*') hypernets =  while True: m = regex.match(ipaddress) if not m: break inner = m.groups() hypernets.append(inner) ipaddress = ipaddress.replace(inner, '') abas = get_abas(ipaddress) for a in abas: bab = ''.join( [ a, a, a ] ) for h in hypernets: if bab in h: return True return False tls_count = 0 ssl_count = 0 for line in data: if isTLS(line): tls_count += 1 if isSSL(line): ssl_count += 1 print "tls: " + str(tls_count) print "ssl: " + str(ssl_count)
for reference, my input file is here, and my results were:
- Part 1:
- Part 2: