Add solutions for day 3 in Python
This commit is contained in:
parent
808a63f32e
commit
6e4472386e
2 changed files with 65 additions and 0 deletions
34
day_03/python/part_1.py
Normal file
34
day_03/python/part_1.py
Normal file
|
|
@ -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()
|
||||
31
day_03/python/part_2.py
Normal file
31
day_03/python/part_2.py
Normal file
|
|
@ -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()
|
||||
Loading…
Add table
Add a link
Reference in a new issue