## DEV Community is a community of 861,926 amazing developers

We're a place where coders share, stay up-to-date and grow their careers.

Viper

Posted on • Updated on

# Advent of Code 2020: Python Solution Day 6

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:

with open("day6.txt", "r") as fp:

groups = []
group = []
for question in lines:
if question!="\n":
group.append(question.split("\n"))
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.

## Discussion (7) Florian Rohrer

Here is my Python solution:

``````from collections import Counter

with open("input.txt") as f:
grps = [x.strip().split() for x in f.read().split("\n\n")]

print(sum([len(Counter("".join(g))) for g in grps]))
print(sum([len([v for v in Counter("".join(g)).values() if v == len(g)]) for g in grps]))
`````` Philip Purwoko

This is my solution using python for part 1 ( Not using python list comprehension version )

``````answers = []

with open('input.txt') as file:
if i != '\n':
for q in i[:-1]:
else:

`````` Viper

Still it is awesome. Thanks for sharing. Viper

So simple yet so tricky. Olivier Guimbal

``````groups = splitWhen (== "") . lines <\$> readFile "./data.txt"
part1 = sum . map (length . Set.fromList . intercalate "") <\$> groups
part2 = sum . map (Set.size . foldl1 Set.intersection . map Set.fromList)  <\$> groups
`````` Viper

Just in 3 lines. It is great. Ruby two liner

``````group_answers = File.open("input.txt").read.split("\n\n")
group_answers.reduce(0) { |sum, group| sum + group.split("\n").map { |i| i.split("") }.inject(:&).count }
``````