Signed-off-by: Amneesh Singh <natto@weirdnatto.in>
This commit is contained in:
2022-12-03 16:23:21 +05:30
parent 26374c815d
commit 9d6a8e6aaf
3 changed files with 337 additions and 1 deletions

31
day3.hs Normal file
View File

@@ -0,0 +1,31 @@
import Data.Char (isAsciiLower, isAsciiUpper)
import Data.List (intersect)
import Lib (chunks)
-- we do not use a simple 9 value case cuz yeah
main :: IO ()
main = do
input <- readFile "day3.in"
putStr "Q1: "
print $ q1 input
putStr "Q2: "
print $ q2 input
q1 :: String -> Int
q1 =
sum
. map (\x -> val . head . uncurry intersect $ splitAt (div (length x) 2) x)
. lines
q2 =
sum
. map (val . head . foldr1 intersect)
. chunks 3
. lines
val :: Char -> Int
val c
| isAsciiLower c = 1 + fromEnum c - fromEnum 'a'
| isAsciiUpper c = 27 + fromEnum c - fromEnum 'A'
| otherwise = 0