From fec46e87e0332366a1af666c0c9b38221e8845ef Mon Sep 17 00:00:00 2001 From: Martin Potier Date: Thu, 10 Dec 2020 16:10:39 +0200 Subject: [PATCH] Day 10 - Part 1 --- day10/input | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++ day10/main.hs | 41 ++++++++++++++++++++++ 2 files changed, 136 insertions(+) create mode 100644 day10/input create mode 100755 day10/main.hs diff --git a/day10/input b/day10/input new file mode 100644 index 0000000..f0aa5d3 --- /dev/null +++ b/day10/input @@ -0,0 +1,95 @@ +99 +3 +1 +11 +48 +113 +131 +43 +82 +19 +4 +153 +105 +52 +56 +109 +27 +119 +147 +31 +34 +13 +129 +17 +61 +10 +29 +24 +12 +104 +152 +103 +80 +116 +79 +73 +21 +133 +44 +18 +74 +112 +136 +30 +146 +100 +39 +130 +91 +124 +70 +115 +81 +28 +151 +2 +122 +87 +143 +62 +7 +126 +95 +75 +20 +123 +63 +125 +53 +45 +141 +14 +67 +69 +60 +114 +57 +142 +150 +42 +78 +132 +66 +88 +140 +139 +106 +38 +85 +37 +51 +94 +98 +86 +68 diff --git a/day10/main.hs b/day10/main.hs new file mode 100755 index 0000000..a9581fe --- /dev/null +++ b/day10/main.hs @@ -0,0 +1,41 @@ +#! /usr/bin/env -S"ANSWER=42" nix-shell +#! nix-shell -p ghcid +#! nix-shell -p "haskellPackages.ghcWithPackages (p: with p; [pretty-simple])" +#! nix-shell -i "ghcid -c 'ghci' -T main" + +{-# OPTIONS_GHC -Wall -Wincomplete-uni-patterns #-} +{-# OPTIONS_GHC -Wno-unused-top-binds -Wno-unused-imports #-} +{-# LANGUAGE OverloadedStrings #-} + +import Debug.Trace (trace) +import Text.Pretty.Simple +import Data.List + +smallExample :: [Int] +smallExample = [16,10,15,5,1,11,7,19,6,12,4] + +biggerExample :: [Int] +biggerExample = [28,33,18,42,31,14,46,20,48,47,24,23,49,45,19,38,39,11,1,32,25 + ,35,8,17,7,9,4,2,34,10,3] + +solvePart1 :: [Int] -> Int +solvePart1 xs = finally + $ span (== 1) + $ sort + $ map (\(x,y) -> y - x) + $ zip (0:sorted) sorted + where + sorted = sort xs + finally (x,y) = length x * ((length y)+1) + +main :: IO () +main = do + input' <- lines <$> readFile "day10/input" + let input = read <$> input' + putStrLn "Tests" + print $ smallExample + print $ biggerExample + putStrLn "Day 10 - Part 1" + print $ solvePart1 smallExample + print $ solvePart1 biggerExample + print $ solvePart1 input