## DEV Community

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. 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:

`````` 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
`````` 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 }
``````
DEV Community

## An Animated Guide to Node.js Event Loop Node.js doesn’t stop from running other operations because of Libuv, a C++ library responsible for the event loop and asynchronously handling tasks such as network requests, DNS resolution, file system operations, data encryption, etc.

What happens under the hood when Node.js works on tasks such as database queries? We will explore it by following this piece of code step by step.