aboutsummaryrefslogtreecommitdiff
path: root/day5/solve.py
diff options
context:
space:
mode:
Diffstat (limited to 'day5/solve.py')
-rw-r--r--day5/solve.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/day5/solve.py b/day5/solve.py
new file mode 100644
index 0000000..bf62eba
--- /dev/null
+++ b/day5/solve.py
@@ -0,0 +1,34 @@
+from string import ascii_lowercase, ascii_uppercase
+
+from commons import get_input
+
+removals = [''.join(x) for x in
+ list(zip(ascii_uppercase, ascii_lowercase)) + list(zip(ascii_lowercase, ascii_uppercase))]
+
+inp = get_input(5)
+
+
+def find_reduced_length(txt):
+ last = ""
+
+ while last != txt:
+ last = txt
+ for removal in removals:
+ txt = txt.replace(removal, '')
+ if txt != last:
+ break
+ return len(txt)
+
+
+def find_best_removal(txt):
+ min_length = 1000000000
+ for ch in ascii_lowercase:
+ length = find_reduced_length(txt.replace(ch, '').replace(ch.upper(), ''))
+ if length < min_length:
+ min_length = length
+ return min_length
+
+
+if __name__ == '__main__':
+ print("first:", find_reduced_length(inp))
+ print("second:", find_best_removal(inp))