I am trying this only after few hour of the challenge unlocked. And first part was easy to solve. But for second part, I had to take help from reddit thread, specially here.
From few challenges, I first started with the toy example given there and if all the cases matches on this example input then feed my input to this algorithm and done. Here, day6_test.txt
is a example input present on the challenge link. And day6.txt
is my input. A repo with output is present at GitHub.
with open("day6_test.txt", "r") as fp:
lines=fp.readlines()
with open("day6.txt", "r") as fp:
lines=fp.readlines()
groups = []
group = []
for question in lines:
if question!="\n":
group.append(question.split("\n")[0])
else:
groups.append(group)
group=[]
groups.append(group)
# solution to challenge 1
solution_1 = []
for group in groups:
#print(f"Group: ", group)
unique_ques = []
for ques in group:
unique_ques.extend([uq for uq in ques])
#print(f"Unique questions: {set(unique_ques)}")
solution_1.extend(list(set(unique_ques)))
print(f"Solution 1: {len(solution_1)}")
# solution to challenge 2
from collections import Counter
total = 0
for group in groups:
#print(f"\nGroup: {group}")
group_size = len(group)
#print(f"Length of group: {group_size}")
# make single list of enitire group and count occurence
counts = Counter("".join(group))
#print(counts)
counts = Counter(list(counts.values()))[group_size]
total+=counts
print(f"Solution 2:", total)
I write blogs about Computer Vision projects on my GitHub page q-viper.github.io and if you got some time please share yours too.
Top comments (6)
Here is my Python solution:
Github Link
So simple yet so tricky.
My haskell solution
Just in 3 lines. It is great.
Ruby two liner
Still it is awesome. Thanks for sharing.