another coding evening

This commit is contained in:
Peter Hudec
2018-12-14 23:36:29 +01:00
parent 9f3e899cda
commit 2785fe4c1d
19 changed files with 1606 additions and 0 deletions

BIN
05/.solve02.py.swp Normal file

Binary file not shown.

1
05/input.txt Normal file

File diff suppressed because one or more lines are too long

1
05/input_sample.txt Normal file
View File

@ -0,0 +1 @@
dabAcCaCBAcCcaDA

37
05/solve01.py Executable file
View File

@ -0,0 +1,37 @@
#!/usr/bin/env python
def read_input():
with open('input.txt', 'r') as f:
data = f.read().splitlines()
return data[0]
def find_longest_match(polymer):
result = 1
for x in range(len(polymer)-1):
if abs(ord(polymer[x]) - ord(polymer[x+1])) != 32:
break
result += 1
return result
polymer = read_input()
parsing_pos = 0
while parsing_pos < len(polymer):
lm = find_longest_match(polymer[parsing_pos:])
if lm < 2:
parsing_pos += 1
continue
# print("found({}, {}) : {}".format(parsing_pos, lm, polymer[parsing_pos:parsing_pos+lm]))
lm = 2
if parsing_pos == 0:
polymer = polymer[lm:]
else:
polymer = polymer[:parsing_pos] + polymer[lm+parsing_pos:]
parsing_pos -= 1
# print("new polymer: {}".format(polymer))
print(len(polymer))

45
05/solve02.py Executable file
View File

@ -0,0 +1,45 @@
#!/usr/bin/env python
def read_input():
with open('input.txt', 'r') as f:
data = f.read().splitlines()
return data[0]
def find_longest_match(polymer):
result = 1
for x in range(len(polymer)-1):
if abs(ord(polymer[x]) - ord(polymer[x+1])) != 32:
break
result += 1
return result
def retract_polymer(polymer):
parsing_pos = 0
while parsing_pos < len(polymer):
lm = find_longest_match(polymer[parsing_pos:])
if lm < 2:
parsing_pos += 1
continue
lm = 2
if parsing_pos == 0:
polymer = polymer[lm:]
else:
polymer = polymer[:parsing_pos] + polymer[lm+parsing_pos:]
parsing_pos -= 1
return len(polymer)
l = []
for c in range(ord('a'),ord('z')+1):
p = read_input()
if chr(c) not in p:
continue
p = p.replace(chr(c), '')
p = p.replace(chr(c-32), '')
print("removing characher: {}".format(chr(c)))
l.append(retract_polymer(p))
print(min(l))