From f88701078a17d492c2cc46f14f33bd4aee5e02d4 Mon Sep 17 00:00:00 2001 From: Sloane Perrault Date: Wed, 21 Sep 2022 09:19:52 -0400 Subject: [PATCH] solve: day 1, part 2 --- 2020/01/README.md | 20 ++++++++++++++++++++ 2020/01/part2.hs | 24 ++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100755 2020/01/part2.hs diff --git a/2020/01/README.md b/2020/01/README.md index 90e94af..c9fdbff 100644 --- a/2020/01/README.md +++ b/2020/01/README.md @@ -1 +1,21 @@ # Day 1 + +## Part 1 + +Took some time to remember how to read input. + +I assumed that I could build the list of pairs from +the start and never tracing back (order doesn't matter). + +## Part 2 + +Have to take the previous solution and deal with combinations of three values. + +Hardest part is figuring out how to take a list of numbers and return a list +of 3 tuples for the combinations of pairs: + +```hs +triples xs = sequence $ replicate 3 xs +``` + +This produces some additional data but I assume these entries won't be false positives. diff --git a/2020/01/part2.hs b/2020/01/part2.hs new file mode 100755 index 0000000..517d836 --- /dev/null +++ b/2020/01/part2.hs @@ -0,0 +1,24 @@ +#!/usr/bin/env runghc + +import Data.List +import Data.Maybe + +main :: IO () +main = + do + input <- getInput + + let answer = product $ fromJust $ find isSolutionTriple $ triples input + + putStrLn $ show answer + +getInput :: IO [Int] +getInput = fmap (map read . lines) getContents + +triples :: [a] -> [[a]] +triples xs = sequence $ replicate 3 xs + +isSolutionTriple :: [Int] -> Bool +isSolutionTriple triple = sum triple == 2020 + +multplyTriple (a, b, c) = a * b * c