diff --git a/day_03/python/part_1.py b/day_03/python/part_1.py new file mode 100644 index 0000000..842c126 --- /dev/null +++ b/day_03/python/part_1.py @@ -0,0 +1,34 @@ +import sys + +def find_common(*args): + i = set.intersection(*map(set, args)) + if len(i) == 1: + return i.pop() + return None + +def split_str(s): + mid = len(s)//2 + return (s[:mid], s[mid:]) + +def determine_priority(letter): + v = ord(letter) + if 97 <= v <= 122: + return v - 96 + elif 65 <= v <= 90: + return v - 38 + +def run(): + if len(sys.argv) < 2: + print("Not enough arguments") + return + total = 0 + with open(sys.argv[1], "r") as f: + for line in f: + l = line.strip() + s1, s2 = split_str(l) + x = find_common(s1, s2) + total += determine_priority(x) + print(f"Sum: {total}") + +if __name__ == "__main__": + run() \ No newline at end of file diff --git a/day_03/python/part_2.py b/day_03/python/part_2.py new file mode 100644 index 0000000..6c4731c --- /dev/null +++ b/day_03/python/part_2.py @@ -0,0 +1,31 @@ +import sys + +def find_common(*args): + i = set.intersection(*map(set, args)) + if len(i) == 1: + return i.pop() + return None + +def determine_priority(letter): + v = ord(letter) + if 97 <= v <= 122: + return v - 96 + elif 65 <= v <= 90: + return v - 38 + +def run(): + if len(sys.argv) < 2: + print("Not enough arguments") + return + total = 0 + with open(sys.argv[1], "r") as f: + for line in f: + l = line.strip() + l2 = f.readline().strip() + l3 = f.readline().strip() + x = find_common(l, l2, l3) + total += determine_priority(x) + print(f"Sum: {total}") + +if __name__ == "__main__": + run() \ No newline at end of file