Day 5
This commit is contained in:
parent
6cc74cf1b1
commit
e50ed65ed8
|
@ -0,0 +1,68 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import string
|
||||
import sys
|
||||
|
||||
def react(code, offset = 0):
|
||||
reacted = False
|
||||
current = None
|
||||
previous = None
|
||||
index = 0
|
||||
for c in code[offset:]:
|
||||
if index < 1:
|
||||
index += 1
|
||||
continue
|
||||
try:
|
||||
current = code[index]
|
||||
except IndexError:
|
||||
break
|
||||
previous = code[index-1]
|
||||
#print("Checking {} & {}".format(previous, current))
|
||||
if previous.upper() == current.upper():
|
||||
if previous != current:
|
||||
#print("{} and {} reacted around index {} ({})".format(previous, current, index, code[index-2:index+2]))
|
||||
reacted = True
|
||||
break
|
||||
index += 1
|
||||
if reacted:
|
||||
#start = index - 10
|
||||
#if start < 0:
|
||||
start = 0
|
||||
return (True, start, code[:index-1] + code[index+1:])
|
||||
else:
|
||||
return (False, index, code)
|
||||
|
||||
if __name__ == '__main__':
|
||||
lines = sys.stdin.readlines()
|
||||
# Part 1
|
||||
#for l in lines:
|
||||
# reacted = True
|
||||
# code = l.strip()
|
||||
# index = 0
|
||||
# iteration = 0
|
||||
# while reacted:
|
||||
# (reacted, index, code) = react(code, index)
|
||||
# #print("{}, {}, iteration {}".format(reacted, index, iteration))
|
||||
# iteration += 1
|
||||
# print("Resulting code: '{}' ({} iterations) has {} units".format(code, iteration, len(code)))
|
||||
permutations = {}
|
||||
for l in lines:
|
||||
for character in string.ascii_lowercase:
|
||||
reacted = True
|
||||
code = l.strip()
|
||||
code = code.replace(character, '')
|
||||
code = code.replace(character.upper(), '')
|
||||
index = 0
|
||||
iteration = 0
|
||||
while reacted:
|
||||
(reacted, index, code) = react(code, index)
|
||||
iteration += 1
|
||||
permutations[character] = {
|
||||
'code': code,
|
||||
'size': len(code),
|
||||
'iterations': iteration,
|
||||
}
|
||||
for character in string.ascii_lowercase:
|
||||
print("Option {}{} result in code length {} ({} iterations)".format(
|
||||
character, character.upper(), permutations[character]['size'],
|
||||
permutations[character]['iterations']))
|
Loading…
Reference in New Issue