Day 4 done
This commit is contained in:
39
app/4.hs
39
app/4.hs
@ -2,14 +2,43 @@
|
||||
module Main where
|
||||
|
||||
import Data.Functor
|
||||
import Data.List
|
||||
import Data.Universe.Helpers
|
||||
import Text.Regex.PCRE
|
||||
import Data.Function
|
||||
import Debug.Trace
|
||||
|
||||
parse = undefined
|
||||
parse1 :: String -> [String]
|
||||
parse1 a =
|
||||
let x = lines a
|
||||
x' = x <&> reverse in
|
||||
x ++ -- vertical ⇒
|
||||
x' ++ -- vertical ⇐
|
||||
transpose x ++ -- horizontal ⇓
|
||||
(transpose x <&> reverse) ++ -- horizontal ⇓
|
||||
diagonals x ++ -- diagonal ⇗
|
||||
diagonals x' ++ -- diagonal ⇖
|
||||
(diagonals x <&> reverse) ++ -- diagonal ⇙
|
||||
(diagonals x'<&> reverse) -- diagonal ⇘
|
||||
|
||||
solve1 = undefined
|
||||
solve1 :: [String] -> Int
|
||||
solve1 = sum . (length . (getAllTextMatches . (=~ "XMAS") :: String -> [String]) <$>)
|
||||
|
||||
solve2 = undefined
|
||||
pattern2 :: Int -> String
|
||||
pattern2 i = let i' = i-2 in
|
||||
"M.M.{"++ show i' ++"}.A..{" ++ show i' ++ "}S.S|" ++
|
||||
"M.S.{"++ show i' ++"}.A..{" ++ show i' ++ "}M.S|" ++
|
||||
"S.M.{"++ show i' ++"}.A..{" ++ show i' ++ "}S.M|" ++
|
||||
"S.S.{"++ show i' ++"}.A..{" ++ show i' ++ "}M.M"
|
||||
|
||||
solve2 :: String -> Int
|
||||
solve2 s =
|
||||
let l = length . head . lines $ s in
|
||||
let t = (getAllTextSubmatches . (=~ pattern2 l) :: String -> [String]) . intercalate "U" . lines <$> tails s
|
||||
t' = nub . concat $ t in
|
||||
length t'
|
||||
|
||||
main :: IO ()
|
||||
main = readFile "inputs/4" <&> parse >>= \i ->
|
||||
print (solve1 i) >>
|
||||
main = readFile "inputs/4" >>= \i ->
|
||||
print (solve1 $ parse1 i) >>
|
||||
print (solve2 i)
|
||||
|
Reference in New Issue
Block a user