aboutsummaryrefslogtreecommitdiff
path: root/execs/Day04.hs
diff options
context:
space:
mode:
authorAkshay <[email protected]>2020-12-16 07:27:38 +0000
committerAkshay <[email protected]>2020-12-16 07:27:38 +0000
commit8c1193fece01bb80e86d8cc36efcf8820a6ccb46 (patch)
treef13ed4cdb33e748f596db9b7e7a2b08d8b3ba0ef /execs/Day04.hs
parent38f3a717b0f8095fb05b9be0bebd158474eb7618 (diff)
format *
Diffstat (limited to 'execs/Day04.hs')
-rw-r--r--execs/Day04.hs18
1 files changed, 9 insertions, 9 deletions
diff --git a/execs/Day04.hs b/execs/Day04.hs
index a95dfd0..1834250 100644
--- a/execs/Day04.hs
+++ b/execs/Day04.hs
@@ -1,12 +1,12 @@
1module Main where 1module Main where
2 2
3import Text.ParserCombinators.Parsec 3import Data.Char (isDigit, isHexDigit)
4import Data.Map.Strict (Map, (!)) 4import Data.Map.Strict (Map, (!))
5import qualified Data.Map.Strict as Map 5import qualified Data.Map.Strict as Map
6import Data.Char (isDigit, isHexDigit) 6import Text.ParserCombinators.Parsec
7import Utils 7import Utils
8 8
9requiredFields = [ "byr" , "iyr" , "eyr" , "hgt" , "hcl" , "ecl" , "pid" ] 9requiredFields = [ "byr" , "iyr" , "eyr" , "hgt" , "hcl" , "ecl" , "pid" ]
10eyeColors = ["amb", "blu", "brn", "gry", "grn", "hzl", "oth"] 10eyeColors = ["amb", "blu", "brn", "gry", "grn", "hzl", "oth"]
11 11
12block = cell `sepBy` oneOf " \n" 12block = cell `sepBy` oneOf " \n"
@@ -28,15 +28,15 @@ validEyr s = bet (read s :: Int) (2020, 2030)
28validEcl = flip elem eyeColors 28validEcl = flip elem eyeColors
29validPid s = length s == 9 && all isDigit s 29validPid s = length s == 9 && all isDigit s
30validHcl ('#':rest) = length rest == 6 && all isHexDigit rest 30validHcl ('#':rest) = length rest == 6 && all isHexDigit rest
31validHcl _ = False 31validHcl _ = False
32validHgt s = 32validHgt s =
33 let value = takeWhile isDigit s 33 let value = takeWhile isDigit s
34 unit = dropWhile isDigit s 34 unit = dropWhile isDigit s
35 height = (read value :: Int, unit) 35 height = (read value :: Int, unit)
36 in case height of 36 in case height of
37 (v, "cm") -> bet v (150, 193) 37 (v, "cm") -> bet v (150, 193)
38 (v, "in") -> bet v (59, 76) 38 (v, "in") -> bet v (59, 76)
39 _ -> False 39 _ -> False
40 40
41doValidate :: Map String String -> Bool 41doValidate :: Map String String -> Bool
42doValidate map = all ((== True) . (\(s, v) -> v $ map ! s)) ls 42doValidate map = all ((== True) . (\(s, v) -> v $ map ! s)) ls