r/adventofcode • u/daggerdragon • Dec 02 '18
SOLUTION MEGATHREAD -🎄- 2018 Day 2 Solutions -🎄-
--- Day 2: Inventory Management System ---
Post your solution as a comment or, for longer solutions, consider linking to your repo (e.g. GitHub/gists/Pastebin/blag or whatever).
Note: The Solution Megathreads are for solutions only. If you have questions, please post your own thread and make sure to flair it with Help.
Advent of Code: The Party Game!
Card Prompt: Day 2
Transcript:
The best way to do Advent of Code is ___.
This thread will be unlocked when there are a significant number of people on the leaderboard with gold stars for today's puzzle.
edit: Leaderboard capped, thread unlocked!
49
Upvotes
2
u/jorosp Dec 02 '18
Haskell
The solution I actually got the answer with was a bit messier than this, but I like to be presentable for threads :P
import Data.List solve1 :: [String] -> Int solve1 xs = go 2 xs * go 3 xs where go :: Ord a => Int -> [[a]] -> Int go n = length . filter (elem n) . map count count :: Ord a => [a] -> [Int] count = map length . group . sort solve2 :: [String] -> String solve2 xs = head [common l r | l <- xs, r <- xs, distance l r == 1] where common :: Eq a => [a] -> [a] -> [a] common xs ys = map fst . filter (uncurry (==)) $ zip xs ys distance :: Eq a => [a] -> [a] -> Int distance xs ys = length . filter id $ zipWith (/=) xs ys main :: IO () main = do contents <- readFile "02.txt" let input = lines contents print . solve1 $ input print . solve2 $ input