Day2, don't accumulate lists
This commit is contained in:
@@ -44,22 +44,16 @@ invalid' s =
|
|||||||
if a > h then False else
|
if a > h then False else
|
||||||
if match (take a cs) cs then True else check (S a) h cs
|
if match (take a cs) cs then True else check (S a) h cs
|
||||||
|
|
||||||
scan : (String → Bool) → Int → Int → SnocList Int → List Int
|
scan : (String → Bool) → Int → Int → Int → Int
|
||||||
scan invalid a b acc =
|
scan invalid a b acc =
|
||||||
let acc = if invalid (show a) then acc :< a else acc in
|
let acc = if invalid (show a) then acc + a else acc in
|
||||||
if a == b then acc <>> Nil else scan invalid (a + 1) b acc
|
if a == b then acc else scan invalid (a + 1) b acc
|
||||||
|
|
||||||
part1 : String → Int
|
part1 : String → Int
|
||||||
part1 text =
|
part1 text = foldl (\acc x => scan invalid (fst x) (snd x) acc) 0 $ parse text
|
||||||
let pairs = parse text
|
|
||||||
results = join $ map (\x => scan invalid (fst x) (snd x) Lin) pairs
|
|
||||||
in foldl _+_ 0 results
|
|
||||||
|
|
||||||
part2 : String → Int
|
part2 : String → Int
|
||||||
part2 text =
|
part2 text = foldl (\acc x => scan invalid' (fst x) (snd x) acc) 0 $ parse text
|
||||||
let pairs = parse text
|
|
||||||
results = join $ map (\x => scan invalid' (fst x) (snd x) Lin) pairs
|
|
||||||
in foldl _+_ 0 results
|
|
||||||
|
|
||||||
run : String -> IO Unit
|
run : String -> IO Unit
|
||||||
run fn = do
|
run fn = do
|
||||||
|
|||||||
Reference in New Issue
Block a user