From 67aabf4d634d129ece42f1964e0043ca1fcccf5d Mon Sep 17 00:00:00 2001 From: Daniele Fucini Date: Sat, 7 Dec 2024 12:10:10 +0100 Subject: [PATCH] Day 7, Part 1 --- Day7/puzzle1.hs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Day7/puzzle1.hs diff --git a/Day7/puzzle1.hs b/Day7/puzzle1.hs new file mode 100644 index 0000000..9d50f4d --- /dev/null +++ b/Day7/puzzle1.hs @@ -0,0 +1,19 @@ +import Data.List (transpose) +import Data.List.Split (splitOn) + +type Equation = (Int, [Int]) + +isSolvable :: Int -> Equation -> Bool +isSolvable cur (result, []) = cur == result +isSolvable cur (result, [x]) = cur + x == result || cur * x == result +isSolvable cur (result, x:y:ys) = isSolvable (cur + x + y) (result, ys) + || isSolvable ((cur + x) * y) (result, ys) + || isSolvable (cur * x + y) (result, ys) + || isSolvable (cur * x * y) (result, ys) + +main = do + [x, y] <- transpose . map (splitOn ":") . lines <$> readFile "day7.txt" + let results = map read x + values = map read <$> map words y + equations = zip results values + print . sum . map fst $ filter (isSolvable 0) equations