From fa183aa17721e86cd44b4cf9d43917987bc074ca Mon Sep 17 00:00:00 2001 From: romangraef Date: Thu, 6 Dec 2018 17:04:54 +0100 Subject: day5 --- commons.py | 2 +- day5/solve.py | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 day5/solve.py diff --git a/commons.py b/commons.py index 2bc58c2..80181ca 100644 --- a/commons.py +++ b/commons.py @@ -22,7 +22,7 @@ def get_input(day: int) -> str: if cache_file.exists(): return cache_file.read_text() text = requests.get('http://adventofcode.com/2018/day/{}/input'.format(day), - cookies=cookies).text + cookies=cookies).text.strip() cache_file.write_text(text) return text 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)) -- cgit