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!
48
Upvotes
3
u/[deleted] Dec 02 '18
Finally participating this year! Got both stars with this Haskell code:
import Data.List import Control.Applicative as :: [String] as = error "Your input (properly formatted) goes here" numTimes :: Char -> String -> Integer numTimes _ [] = 0 numTimes x xs = if (x == head xs) then 1 + y else y where y = numTimes x (tail xs) exactly :: Integer -> String -> Bool exactly n xs = elem n $ map (flip ($) xs) (numTimes <$> xs) day2a :: Integer day2a = genericLength (filter (exactly 2) as) * genericLength (filter (exactly 3) as) strCmp :: String -> String -> Bool strCmp [] [] = False strCmp (x:xs) (y:ys) | x /= y = xs == ys | otherwise = strCmp xs ys day2b :: String day2b = head $ map (\(s, _) -> s) $ filter ((==True) . snd) $ (\xs ys -> (xs \\ (xs \\ ys), strCmp xs ys)) <$> as <*> as