Compare commits
No commits in common. "3f5e878958db7d5266b9ca517ffc104249191d85" and "d30ceb56f7b141ee558bbd86775d7322d4767ba7" have entirely different histories.
3f5e878958
...
d30ceb56f7
56 changed files with 1 additions and 1305 deletions
27
aoc.cabal
27
aoc.cabal
|
|
@ -49,32 +49,6 @@ library
|
|||
AoC.Y2023.D23
|
||||
AoC.Y2023.D24
|
||||
AoC.Y2023.D25
|
||||
AoC.Y2024
|
||||
AoC.Y2024.D01
|
||||
AoC.Y2024.D02
|
||||
AoC.Y2024.D03
|
||||
AoC.Y2024.D04
|
||||
AoC.Y2024.D05
|
||||
AoC.Y2024.D06
|
||||
AoC.Y2024.D07
|
||||
AoC.Y2024.D08
|
||||
AoC.Y2024.D09
|
||||
AoC.Y2024.D10
|
||||
AoC.Y2024.D11
|
||||
AoC.Y2024.D12
|
||||
AoC.Y2024.D13
|
||||
AoC.Y2024.D14
|
||||
AoC.Y2024.D15
|
||||
AoC.Y2024.D16
|
||||
AoC.Y2024.D17
|
||||
AoC.Y2024.D18
|
||||
AoC.Y2024.D19
|
||||
AoC.Y2024.D20
|
||||
AoC.Y2024.D21
|
||||
AoC.Y2024.D22
|
||||
AoC.Y2024.D23
|
||||
AoC.Y2024.D24
|
||||
AoC.Y2024.D25
|
||||
AoC.Year
|
||||
other-modules:
|
||||
Paths_aoc
|
||||
|
|
@ -163,7 +137,6 @@ test-suite spec
|
|||
other-modules:
|
||||
AoCSpec.UtilSpec
|
||||
AoCSpec.Y2023Spec
|
||||
AoCSpec.Y2024Spec
|
||||
SpecHook
|
||||
Paths_aoc
|
||||
autogen-modules:
|
||||
|
|
|
|||
|
|
@ -1,6 +0,0 @@
|
|||
3 4
|
||||
4 3
|
||||
2 5
|
||||
1 3
|
||||
3 9
|
||||
3 3
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -15,7 +15,6 @@ import System.IO (hPutStrLn)
|
|||
import System.IO.Error qualified as IOError
|
||||
|
||||
import AoC.Y2023 qualified as Y2023
|
||||
import AoC.Y2024 qualified as Y2024
|
||||
|
||||
runAoC :: (MonadIO m) => Year -> Day -> m (Either Text Solution)
|
||||
runAoC y d = do
|
||||
|
|
@ -29,7 +28,6 @@ runAoCExample y d = do
|
|||
|
||||
solve :: (MonadIO m) => Year -> Day -> Riddle -> m (Either Text Solution)
|
||||
solve Y2023 = Y2023.solve
|
||||
solve Y2024 = Y2024.solve
|
||||
solve y = \_ _ -> pure $ Left $ show y <> ": not implementedi"
|
||||
|
||||
handleError :: IOError.IOError -> IO ()
|
||||
|
|
@ -41,4 +39,4 @@ printResult (Left e) = putTextLn e
|
|||
printResult (Right s) = print s
|
||||
|
||||
defaultMain :: IO ()
|
||||
defaultMain = Exception.catch (runAoC Y2024 D01 >>= printResult) handleError
|
||||
defaultMain = Exception.catch (runAoC Y2023 D05 >>= printResult) handleError
|
||||
|
|
|
|||
|
|
@ -1,57 +0,0 @@
|
|||
module AoC.Y2024 (solve) where
|
||||
|
||||
import AoC.Day
|
||||
import AoC.Riddle
|
||||
|
||||
import AoC.Y2024.D01 qualified as D01
|
||||
import AoC.Y2024.D02 qualified as D02
|
||||
import AoC.Y2024.D03 qualified as D03
|
||||
import AoC.Y2024.D04 qualified as D04
|
||||
import AoC.Y2024.D05 qualified as D05
|
||||
import AoC.Y2024.D06 qualified as D06
|
||||
import AoC.Y2024.D07 qualified as D07
|
||||
import AoC.Y2024.D08 qualified as D08
|
||||
import AoC.Y2024.D09 qualified as D09
|
||||
import AoC.Y2024.D10 qualified as D10
|
||||
import AoC.Y2024.D11 qualified as D11
|
||||
import AoC.Y2024.D12 qualified as D12
|
||||
import AoC.Y2024.D13 qualified as D13
|
||||
import AoC.Y2024.D14 qualified as D14
|
||||
import AoC.Y2024.D15 qualified as D15
|
||||
import AoC.Y2024.D16 qualified as D16
|
||||
import AoC.Y2024.D17 qualified as D17
|
||||
import AoC.Y2024.D18 qualified as D18
|
||||
import AoC.Y2024.D19 qualified as D19
|
||||
import AoC.Y2024.D20 qualified as D20
|
||||
import AoC.Y2024.D21 qualified as D21
|
||||
import AoC.Y2024.D22 qualified as D22
|
||||
import AoC.Y2024.D23 qualified as D23
|
||||
import AoC.Y2024.D24 qualified as D24
|
||||
import AoC.Y2024.D25 qualified as D25
|
||||
|
||||
solve :: (MonadIO m) => Day -> Text -> m (Either Error Solution)
|
||||
solve D01 = D01.solve
|
||||
solve D02 = D02.solve
|
||||
solve D03 = D03.solve
|
||||
solve D04 = D04.solve
|
||||
solve D05 = D05.solve
|
||||
solve D06 = D06.solve
|
||||
solve D07 = D07.solve
|
||||
solve D08 = D08.solve
|
||||
solve D09 = D09.solve
|
||||
solve D10 = D10.solve
|
||||
solve D11 = D11.solve
|
||||
solve D12 = D12.solve
|
||||
solve D13 = D13.solve
|
||||
solve D14 = D14.solve
|
||||
solve D15 = D15.solve
|
||||
solve D16 = D16.solve
|
||||
solve D17 = D17.solve
|
||||
solve D18 = D18.solve
|
||||
solve D19 = D19.solve
|
||||
solve D20 = D20.solve
|
||||
solve D21 = D21.solve
|
||||
solve D22 = D22.solve
|
||||
solve D23 = D23.solve
|
||||
solve D24 = D24.solve
|
||||
solve D25 = D25.solve
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
module AoC.Y2024.D01 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
import Data.IntMap qualified as M
|
||||
|
||||
parse :: Text -> ([Int], [Int])
|
||||
parse riddle =
|
||||
let
|
||||
lists = transpose $ mapMaybe (readMaybe . toString) . words <$> lines riddle
|
||||
in
|
||||
case lists of
|
||||
[as, bs] -> (as, bs)
|
||||
_ -> ([], [])
|
||||
|
||||
part1 :: Riddle -> Int
|
||||
part1 riddle =
|
||||
let
|
||||
(as, bs) = parse riddle
|
||||
as' = sort as
|
||||
bs' = sort bs
|
||||
distances = zipWith (\a b -> if a > b then a - b else b - a) as' bs'
|
||||
in
|
||||
sum distances
|
||||
|
||||
mkOccurrences :: [Int] -> IntMap Int
|
||||
mkOccurrences = M.unionsWith (+) . fmap (\i -> one (i, 1))
|
||||
|
||||
part2 :: Riddle -> Int
|
||||
part2 riddle =
|
||||
let
|
||||
(as, bs) = parse riddle
|
||||
occurrences = mkOccurrences bs
|
||||
step a total = total + a * fromMaybe 0 (M.lookup a occurrences)
|
||||
in
|
||||
foldr step 0 as
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve riddle = do
|
||||
pure $ Right [fromIntegral $ part1 riddle, fromIntegral $ part2 riddle]
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module AoC.Y2024.D02 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve _ = pure $ Left "not yet implemented"
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module AoC.Y2024.D03 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve _ = pure $ Left "not yet implemented"
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module AoC.Y2024.D04 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve _ = pure $ Left "not yet implemented"
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module AoC.Y2024.D05 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve _ = pure $ Left "not yet implemented"
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module AoC.Y2024.D06 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve _ = pure $ Left "not yet implemented"
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module AoC.Y2024.D07 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve _ = pure $ Left "not yet implemented"
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module AoC.Y2024.D08 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve _ = pure $ Left "not yet implemented"
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module AoC.Y2024.D09 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve _ = pure $ Left "not yet implemented"
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module AoC.Y2024.D10 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve _ = pure $ Left "not yet implemented"
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module AoC.Y2024.D11 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve _ = pure $ Left "not yet implemented"
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module AoC.Y2024.D12 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve _ = pure $ Left "not yet implemented"
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module AoC.Y2024.D13 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve _ = pure $ Left "not yet implemented"
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module AoC.Y2024.D14 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve _ = pure $ Left "not yet implemented"
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module AoC.Y2024.D15 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve _ = pure $ Left "not yet implemented"
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module AoC.Y2024.D16 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve _ = pure $ Left "not yet implemented"
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module AoC.Y2024.D17 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve _ = pure $ Left "not yet implemented"
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module AoC.Y2024.D18 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve _ = pure $ Left "not yet implemented"
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module AoC.Y2024.D19 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve _ = pure $ Left "not yet implemented"
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module AoC.Y2024.D20 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve _ = pure $ Left "not yet implemented"
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module AoC.Y2024.D21 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve _ = pure $ Left "not yet implemented"
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module AoC.Y2024.D22 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve _ = pure $ Left "not yet implemented"
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module AoC.Y2024.D23 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve _ = pure $ Left "not yet implemented"
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module AoC.Y2024.D24 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve _ = pure $ Left "not yet implemented"
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module AoC.Y2024.D25 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve _ = pure $ Left "not yet implemented"
|
||||
|
|
@ -2,6 +2,5 @@ module AoC.Year (Year (..)) where
|
|||
|
||||
data Year
|
||||
= Y0000
|
||||
| Y2024
|
||||
| Y2023
|
||||
deriving stock (Read, Show, Eq, Ord, Enum)
|
||||
|
|
|
|||
|
|
@ -1,28 +0,0 @@
|
|||
module AoCSpec.Y2024Spec (spec) where
|
||||
|
||||
import AoC
|
||||
import Test.Hspec
|
||||
|
||||
spec :: Spec
|
||||
spec = do
|
||||
describe "Day 1" do
|
||||
it "calculates correctly" do
|
||||
runAoC Y2024 D01 `shouldReturn` Right [2580760, 25358365]
|
||||
|
||||
{-
|
||||
describe "Day 2" do
|
||||
it "calculates correctly" do
|
||||
runAoC Y2024 D02 `shouldReturn` Right [2369, 66363]
|
||||
|
||||
describe "Day 3" do
|
||||
it "calculates correctly" do
|
||||
runAoC Y2023 D03 `shouldReturn` Right [528799, 84907174]
|
||||
|
||||
describe "Day 4" do
|
||||
it "calculates correctly" do
|
||||
runAoC Y2023 D04 `shouldReturn` Right [24542, 8736438]
|
||||
|
||||
describe "Day 5" do
|
||||
it "calculates the example correctly" do
|
||||
runAoCExample Y2023 D05 `shouldReturn` Right [35]
|
||||
-}
|
||||
Loading…
Add table
Add a link
Reference in a new issue