You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
842 B
30 lines
842 B
#!/usr/bin/env python3
|
|
|
|
import sys,string
|
|
import numpy as np
|
|
|
|
def find_badge(r):
|
|
r1,r2,r3 = r
|
|
i1 = set(r1).intersection(set(r2))
|
|
i2 = set(r3).intersection(i1)
|
|
item = list(i2)[0]
|
|
p = string.ascii_letters.index(item) + 1
|
|
return p
|
|
|
|
if __name__ == '__main__':
|
|
sacks = [list(line.strip('\n')) for line in open(sys.argv[1])]
|
|
|
|
# challenge 1
|
|
priorities = 0
|
|
for sack in sacks:
|
|
item = list(set(sack[:len(sack)//2]).intersection(set(sack[len(sack)//2:])))[0]
|
|
priorities = priorities + string.ascii_letters.index(item) + 1
|
|
res1 = str(priorities)
|
|
print("challenge 1:" + "\n" + res1 + "\n")
|
|
|
|
# challenge 2
|
|
s = np.array_split(np.array(sacks,dtype=object),len(sacks)/3)
|
|
prios = list(map(find_badge,s))
|
|
res2 = str(np.sum(prios))
|
|
print("challenge 2:" + "\n" + res2 + "\n")
|
|
|
|
|