aboutsummaryrefslogtreecommitdiff
path: root/day5
diff options
context:
space:
mode:
authorromangraef <romangraef@loves.dicksinhisan.us>2018-12-06 17:04:54 +0100
committerromangraef <romangraef@loves.dicksinhisan.us>2018-12-06 17:04:54 +0100
commitfa183aa17721e86cd44b4cf9d43917987bc074ca (patch)
tree0cdbc958e48c00f0d2d35e78b93454a8a054b889 /day5
parent28697e7a3bb6da16e9be331bf9576572468910d6 (diff)
downloadaoc2018-fa183aa17721e86cd44b4cf9d43917987bc074ca.tar.gz
aoc2018-fa183aa17721e86cd44b4cf9d43917987bc074ca.tar.bz2
aoc2018-fa183aa17721e86cd44b4cf9d43917987bc074ca.zip
day5
Diffstat (limited to 'day5')
-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))