projects
/
advent-of-code-21.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
5d41de6
)
Simplified reduce
author
Neil Smith
<neil.git@njae.me.uk>
Tue, 21 Dec 2021 09:18:30 +0000
(09:18 +0000)
committer
Neil Smith
<neil.git@njae.me.uk>
Tue, 21 Dec 2021 09:18:30 +0000
(09:18 +0000)
advent18/Main.hs
patch
|
blob
|
history
diff --git
a/advent18/Main.hs
b/advent18/Main.hs
index 0eb9ac881be8c2393c70709ad1ca3648e4ef43f5..d9638c3f896d5ce36fdf36bb0727ee6b6529b682 100644
(file)
--- a/
advent18/Main.hs
+++ b/
advent18/Main.hs
@@
-1,4
+1,4
@@
--- Writeup at https://work.njae.me.uk/2021/12/
19/advent-of-code-2021-day-17
/
+-- Writeup at https://work.njae.me.uk/2021/12/
21/advent-of-code-2021-day-18
/
import Data.Text ()
import qualified Data.Text.IO as TIO
import Data.Text ()
import qualified Data.Text.IO as TIO
@@
-8,7
+8,11
@@
import Data.Maybe
import Data.List
data Tree = Pair Tree Tree | Leaf Int
import Data.List
data Tree = Pair Tree Tree | Leaf Int
- deriving (Show, Eq)
+ deriving (Eq)
+
+instance Show Tree where
+ show (Leaf n) = show n
+ show (Pair l r) = "[" ++ show l ++ "," ++ show r ++ "]"
data Cxt = Top | L Cxt Tree | R Tree Cxt
deriving (Show, Eq)
data Cxt = Top | L Cxt Tree | R Tree Cxt
deriving (Show, Eq)
@@
-129,16
+133,10
@@
splittableC t@(Leaf n, _)
| otherwise = Nothing
splittableC t@(Pair _ _, _) = splittableC (left t) <|> splittableC (right t)
| otherwise = Nothing
splittableC t@(Pair _ _, _) = splittableC (left t) <|> splittableC (right t)
-
reduce :: Tree -> Tree
reduce :: Tree -> Tree
-reduce num = splt
- where
- expl = case (explode num) of
- Nothing -> num
- Just eres -> reduce eres
- splt = case (split expl) of
- Nothing -> expl
- Just sres -> reduce sres
+reduce num = case explode num <|> split num of
+ Nothing -> num
+ Just num1 -> reduce num1
snailAdd :: Tree -> Tree -> Tree
snailAdd a b = reduce $ Pair a b
snailAdd :: Tree -> Tree -> Tree
snailAdd a b = reduce $ Pair a b