55 lines
1.6 KiB
Text
55 lines
1.6 KiB
Text
Day 6 Notes
|
|
|
|
+--------+
|
|
| Part 1 |
|
|
+--------+
|
|
|
|
$ elixir day6part1.exs
|
|
6585
|
|
|
|
Thoughts:
|
|
|
|
So far I've read the whole file into memory. I initially did that here to get the answer
|
|
quickly to preserve my leaderboard position 🌟, but then refactored to use File.stream!
|
|
to parse the file line-by-line.
|
|
|
|
This meant using Stream.chunk_by to sort into groups.
|
|
Join all the answers together, and use Enum.frequencies/1 to count all the answers (discarding
|
|
newlines).
|
|
|
|
+--------+
|
|
| Part 2 |
|
|
+--------+
|
|
|
|
$ elixir day6part2.exs
|
|
3276
|
|
|
|
Thoughts:
|
|
|
|
Not stripping the newlines came in handy here, because I could use them to count how
|
|
many people are in each group. Then I could just count the frequencies that were answered
|
|
by the whole group, and finally sum those results.
|
|
|
|
|
|
+------------------+
|
|
| Overall Thoughts |
|
|
+------------------+
|
|
|
|
I didn't get an accurate time for this one due to having lunch between parts 1 and 2 🍝.
|
|
Got the answer under an hour including lunch, but more like two hours including streaming
|
|
the file and tidying up.
|
|
|
|
Using Map.pop/2 to remove an element and return its value at the same time is probably the
|
|
most notable thing here?
|
|
|
|
I wonder if there's a more effective way to parse the stream dynamically and also strip off
|
|
the new lines?
|
|
|
|
** Update **
|
|
|
|
From other people's answers, taking the intersection of all the replies was the best way
|
|
to implement this. Makes sense.
|
|
|
|
I think I'm succumbing to pressure to complete quickly due to the leaderboard, and just
|
|
going with whatever works rather than reading the question properly and working out
|
|
what it's *really* asking.
|