Compare commits
No commits in common. "04636aacc56a7671aac689f7da228788e42e29c6" and "88cbe81d089c6c85ebaf387009937b4dba2e1e8b" have entirely different histories.
04636aacc5
...
88cbe81d08
66 changed files with 21 additions and 1473 deletions
2
.hspec
2
.hspec
|
|
@ -1,2 +0,0 @@
|
|||
--rerun
|
||||
--rerun-all-on-success
|
||||
56
aoc.cabal
56
aoc.cabal
|
|
@ -14,41 +14,11 @@ license: MIT
|
|||
build-type: Simple
|
||||
extra-source-files:
|
||||
README.org
|
||||
data-dir: data
|
||||
|
||||
library
|
||||
exposed-modules:
|
||||
AoC
|
||||
AoC.Day
|
||||
AoC.Riddle
|
||||
AoC.Util
|
||||
AoC.Y2023
|
||||
AoC.Y2023.D01
|
||||
AoC.Y2023.D02
|
||||
AoC.Y2023.D03
|
||||
AoC.Y2023.D04
|
||||
AoC.Y2023.D05
|
||||
AoC.Y2023.D06
|
||||
AoC.Y2023.D07
|
||||
AoC.Y2023.D08
|
||||
AoC.Y2023.D09
|
||||
AoC.Y2023.D10
|
||||
AoC.Y2023.D11
|
||||
AoC.Y2023.D12
|
||||
AoC.Y2023.D13
|
||||
AoC.Y2023.D14
|
||||
AoC.Y2023.D15
|
||||
AoC.Y2023.D16
|
||||
AoC.Y2023.D17
|
||||
AoC.Y2023.D18
|
||||
AoC.Y2023.D19
|
||||
AoC.Y2023.D20
|
||||
AoC.Y2023.D21
|
||||
AoC.Y2023.D22
|
||||
AoC.Y2023.D23
|
||||
AoC.Y2023.D24
|
||||
AoC.Y2023.D25
|
||||
AoC.Year
|
||||
AoC.Internal
|
||||
other-modules:
|
||||
Paths_aoc
|
||||
autogen-modules:
|
||||
|
|
@ -59,8 +29,7 @@ library
|
|||
BlockArguments
|
||||
OverloadedStrings
|
||||
ImportQualifiedPost
|
||||
DerivingStrategies
|
||||
ghc-options: -Weverything -Wno-implicit-prelude -Wno-missing-import-lists -Wno-missing-kind-signatures -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-safe-haskell-mode -Wno-missing-local-signatures -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -fdefer-typed-holes -Wno-unused-packages
|
||||
ghc-options: -Weverything -Wno-implicit-prelude -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-safe-haskell-mode -Wno-missing-local-signatures -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -fdefer-typed-holes -Wno-unused-packages
|
||||
build-depends:
|
||||
base
|
||||
, containers
|
||||
|
|
@ -69,7 +38,7 @@ library
|
|||
, text
|
||||
mixins:
|
||||
base hiding (Prelude)
|
||||
, relude (Relude as Prelude, Relude, Relude.Unsafe, Relude.Extra.Enum)
|
||||
, relude (Relude as Prelude)
|
||||
default-language: GHC2021
|
||||
|
||||
executable aoc
|
||||
|
|
@ -84,8 +53,7 @@ executable aoc
|
|||
BlockArguments
|
||||
OverloadedStrings
|
||||
ImportQualifiedPost
|
||||
DerivingStrategies
|
||||
ghc-options: -Weverything -Wno-implicit-prelude -Wno-missing-import-lists -Wno-missing-kind-signatures -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-safe-haskell-mode -Wno-missing-local-signatures -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -fdefer-typed-holes -Wno-unused-packages
|
||||
ghc-options: -Weverything -Wno-implicit-prelude -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-safe-haskell-mode -Wno-missing-local-signatures -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -fdefer-typed-holes -Wno-unused-packages
|
||||
build-depends:
|
||||
aoc
|
||||
, base
|
||||
|
|
@ -95,7 +63,7 @@ executable aoc
|
|||
, text
|
||||
mixins:
|
||||
base hiding (Prelude)
|
||||
, relude (Relude as Prelude, Relude, Relude.Unsafe, Relude.Extra.Enum)
|
||||
, relude (Relude as Prelude)
|
||||
default-language: GHC2021
|
||||
|
||||
test-suite doctest
|
||||
|
|
@ -111,8 +79,7 @@ test-suite doctest
|
|||
BlockArguments
|
||||
OverloadedStrings
|
||||
ImportQualifiedPost
|
||||
DerivingStrategies
|
||||
ghc-options: -Weverything -Wno-implicit-prelude -Wno-missing-import-lists -Wno-missing-kind-signatures -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-safe-haskell-mode -Wno-missing-local-signatures -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -fdefer-typed-holes -Wno-unused-packages
|
||||
ghc-options: -Weverything -Wno-implicit-prelude -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-safe-haskell-mode -Wno-missing-local-signatures -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -fdefer-typed-holes -Wno-unused-packages
|
||||
build-tool-depends:
|
||||
doctest:doctest
|
||||
build-depends:
|
||||
|
|
@ -124,16 +91,14 @@ test-suite doctest
|
|||
, text
|
||||
mixins:
|
||||
base hiding (Prelude)
|
||||
, relude (Relude as Prelude, Relude, Relude.Unsafe, Relude.Extra.Enum)
|
||||
, relude (Relude as Prelude)
|
||||
default-language: Haskell2010
|
||||
|
||||
test-suite spec
|
||||
type: exitcode-stdio-1.0
|
||||
main-is: Spec.hs
|
||||
other-modules:
|
||||
AoCSpec.UtilSpec
|
||||
AoCSpec.Y2023Spec
|
||||
SpecHook
|
||||
AoCSpec.InternalSpec
|
||||
Paths_aoc
|
||||
autogen-modules:
|
||||
Paths_aoc
|
||||
|
|
@ -143,8 +108,7 @@ test-suite spec
|
|||
BlockArguments
|
||||
OverloadedStrings
|
||||
ImportQualifiedPost
|
||||
DerivingStrategies
|
||||
ghc-options: -Weverything -Wno-implicit-prelude -Wno-missing-import-lists -Wno-missing-kind-signatures -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-safe-haskell-mode -Wno-missing-local-signatures -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -fdefer-typed-holes -Wno-unused-packages
|
||||
ghc-options: -Weverything -Wno-implicit-prelude -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-safe-haskell-mode -Wno-missing-local-signatures -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -fdefer-typed-holes -Wno-unused-packages
|
||||
cpp-options: -DTEST
|
||||
build-tool-depends:
|
||||
hspec-discover:hspec-discover
|
||||
|
|
@ -160,5 +124,5 @@ test-suite spec
|
|||
, text
|
||||
mixins:
|
||||
base hiding (Prelude)
|
||||
, relude (Relude as Prelude, Relude, Relude.Unsafe, Relude.Extra.Enum)
|
||||
, relude (Relude as Prelude)
|
||||
default-language: GHC2021
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
39
gen.sh
39
gen.sh
|
|
@ -1,39 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
Y="$1"; shift
|
||||
if [ -z "$Y" ]; then
|
||||
Y="$(date +%Y)"
|
||||
fi
|
||||
|
||||
fday="$1"; shift
|
||||
tday="$1"; shift
|
||||
|
||||
if [ -z "$fday" ]; then
|
||||
fday=1
|
||||
tday=25
|
||||
fi
|
||||
if [ -z "$tday" ]; then
|
||||
tday="${fday}"
|
||||
fi
|
||||
|
||||
days=($(seq $fday $tday))
|
||||
|
||||
if ! grep -q "Y${Y}" src/AoC/Year.hs; then
|
||||
sed -i -e "s/\(\(\s\+\)= Y0000\)/\1\n\2| Y${Y}/" src/AoC/Year.hs
|
||||
fi
|
||||
|
||||
mkdir -p "src/AoC/Y${Y}"
|
||||
if ! test -f "src/AoC/Y${Y}.hs"; then
|
||||
sed -e "s/Y0000/Y${Y}/g" template/Y0000.hs > "src/AoC/Y${Y}.hs"
|
||||
fi
|
||||
|
||||
for d in "${days[@]}"; do
|
||||
d=$(printf "%02d" "$d")
|
||||
mkdir -p "data/Y${Y}/D${d}"
|
||||
touch "data/Y${Y}/D${d}/riddle"
|
||||
touch "data/Y${Y}/D${d}/result"
|
||||
|
||||
if ! test -f "src/AoC/Y${Y}/D${d}.hs"; then
|
||||
sed -e "s/Y0000/Y${Y}/g" -e "s/D00/D${d}/g" template/D00.hs > "src/AoC/Y${Y}/D${d}.hs"
|
||||
fi
|
||||
done
|
||||
|
|
@ -9,15 +9,13 @@ description: "Advent-Of-Code"
|
|||
extra-source-files:
|
||||
- README.org
|
||||
|
||||
data-dir: data
|
||||
|
||||
dependencies:
|
||||
- name: base
|
||||
mixin:
|
||||
- hiding (Prelude)
|
||||
- name: relude
|
||||
mixin:
|
||||
- (Relude as Prelude, Relude, Relude.Unsafe, Relude.Extra.Enum)
|
||||
- (Relude as Prelude)
|
||||
- containers
|
||||
- text
|
||||
- megaparsec
|
||||
|
|
@ -26,7 +24,6 @@ ghc-options:
|
|||
- -Weverything
|
||||
- -Wno-implicit-prelude
|
||||
- -Wno-missing-import-lists # Requires explicit imports of _every_ function (e.g. ‘$’); too strict
|
||||
- -Wno-missing-kind-signatures
|
||||
- -Wno-missed-specialisations # When GHC can’t specialize a polymorphic function. No big deal and requires fixing underlying libraries to solve.
|
||||
- -Wno-all-missed-specialisations # See missed-specialisations
|
||||
- -Wno-unsafe # Don’t use Safe Haskell warnings
|
||||
|
|
@ -43,11 +40,9 @@ default-extensions:
|
|||
- BlockArguments
|
||||
- OverloadedStrings
|
||||
- ImportQualifiedPost
|
||||
- DerivingStrategies
|
||||
|
||||
library:
|
||||
source-dirs: src
|
||||
generated-other-modules: Paths_aoc
|
||||
verbatim:
|
||||
default-language: GHC2021
|
||||
|
||||
|
|
|
|||
25
src/AoC.hs
25
src/AoC.hs
|
|
@ -1,32 +1,21 @@
|
|||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
module AoC (
|
||||
defaultMain,
|
||||
runAoC,
|
||||
module AoC.Day,
|
||||
module AoC.Year,
|
||||
) where
|
||||
|
||||
import AoC.Day
|
||||
import AoC.Riddle
|
||||
import AoC.Year
|
||||
|
||||
import Control.Exception qualified as Exception
|
||||
import System.IO (hPutStrLn)
|
||||
import System.IO.Error qualified as IOError
|
||||
|
||||
import AoC.Y2023 qualified as Y2023
|
||||
|
||||
runAoC :: (MonadIO m) => Year -> Day -> m (Either Text Solution)
|
||||
runAoC y d = do
|
||||
riddle <- loadRiddle y d
|
||||
solve y d riddle
|
||||
|
||||
solve :: (MonadIO m) => Year -> Day -> Riddle -> m (Either Text Solution)
|
||||
solve Y2023 = Y2023.solve
|
||||
solve y = \_ _ -> pure $ Left $ show y <> ": not implementedi"
|
||||
runAoC :: [String] -> IO ()
|
||||
runAoC _args = putStrLn "Hello"
|
||||
|
||||
handleError :: IOError.IOError -> IO ()
|
||||
handleError e = do
|
||||
hPutStrLn stderr $ "I ran into an issue: " <> show e
|
||||
|
||||
defaultMain :: IO ()
|
||||
defaultMain = Exception.catch (runAoC Y2023 D01 >>= print) handleError
|
||||
defaultMain = do
|
||||
args <- getArgs
|
||||
Exception.catch (runAoC args) handleError
|
||||
|
|
|
|||
|
|
@ -1,29 +0,0 @@
|
|||
module AoC.Day (Day (..)) where
|
||||
|
||||
data Day
|
||||
= D01
|
||||
| D02
|
||||
| D03
|
||||
| D04
|
||||
| D05
|
||||
| D06
|
||||
| D07
|
||||
| D08
|
||||
| D09
|
||||
| D10
|
||||
| D11
|
||||
| D12
|
||||
| D13
|
||||
| D14
|
||||
| D15
|
||||
| D16
|
||||
| D17
|
||||
| D18
|
||||
| D19
|
||||
| D20
|
||||
| D21
|
||||
| D22
|
||||
| D23
|
||||
| D24
|
||||
| D25
|
||||
deriving stock (Read, Show, Eq, Ord, Enum)
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
-- | Internal module in order to facilitate testability.
|
||||
module AoC.Util (solveRiddle, readFileUtf8) where
|
||||
module AoC.Internal (solveRiddle, readFileUtf8) where
|
||||
|
||||
readFileUtf8 :: (MonadIO m) => FilePath -> m Text
|
||||
readFileUtf8 = fmap (decodeUtf8With lenientDecode) . readFileBS
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
module AoC.Riddle (
|
||||
Riddle (..),
|
||||
Error (..),
|
||||
Solution (..),
|
||||
loadRiddle,
|
||||
) where
|
||||
|
||||
import AoC.Util (readFileUtf8)
|
||||
|
||||
import AoC.Day
|
||||
import AoC.Year
|
||||
|
||||
type Riddle = Text
|
||||
type Error = Text
|
||||
type Solution = [Integer]
|
||||
|
||||
loadRiddle :: (MonadIO m) => Year -> Day -> m Riddle
|
||||
loadRiddle y d = readFileUtf8 inputFile
|
||||
where
|
||||
inputFile = intercalate "/" ["data", show y, show d, "riddle"]
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
module AoC.Y2023 (solve) where
|
||||
|
||||
import AoC.Day
|
||||
import AoC.Riddle
|
||||
|
||||
import AoC.Y2023.D01 qualified as D01
|
||||
import AoC.Y2023.D02 qualified as D02
|
||||
import AoC.Y2023.D03 qualified as D03
|
||||
import AoC.Y2023.D04 qualified as D04
|
||||
import AoC.Y2023.D05 qualified as D05
|
||||
import AoC.Y2023.D06 qualified as D06
|
||||
import AoC.Y2023.D07 qualified as D07
|
||||
import AoC.Y2023.D08 qualified as D08
|
||||
import AoC.Y2023.D09 qualified as D09
|
||||
import AoC.Y2023.D10 qualified as D10
|
||||
import AoC.Y2023.D11 qualified as D11
|
||||
import AoC.Y2023.D12 qualified as D12
|
||||
import AoC.Y2023.D13 qualified as D13
|
||||
import AoC.Y2023.D14 qualified as D14
|
||||
import AoC.Y2023.D15 qualified as D15
|
||||
import AoC.Y2023.D16 qualified as D16
|
||||
import AoC.Y2023.D17 qualified as D17
|
||||
import AoC.Y2023.D18 qualified as D18
|
||||
import AoC.Y2023.D19 qualified as D19
|
||||
import AoC.Y2023.D20 qualified as D20
|
||||
import AoC.Y2023.D21 qualified as D21
|
||||
import AoC.Y2023.D22 qualified as D22
|
||||
import AoC.Y2023.D23 qualified as D23
|
||||
import AoC.Y2023.D24 qualified as D24
|
||||
import AoC.Y2023.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,24 +0,0 @@
|
|||
module AoC.Y2023.D01 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
import Data.Char (digitToInt, isDigit)
|
||||
import Relude.Unsafe (fromJust)
|
||||
|
||||
digits :: String -> [Int]
|
||||
digits = fmap digitToInt . filter isDigit
|
||||
|
||||
digits' :: String -> NonEmpty Int
|
||||
digits' = fromJust . nonEmpty . digits
|
||||
|
||||
calibrationValue :: String -> Int
|
||||
calibrationValue s = firstDigit * 10 + lastDigit
|
||||
where
|
||||
ds = digits' s
|
||||
firstDigit = head ds
|
||||
lastDigit = last ds
|
||||
|
||||
solvePart1 :: Text -> Integer
|
||||
solvePart1 = fromIntegral . sum . fmap (calibrationValue . toString) . lines
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve input = pure $ Right [solvePart1 input]
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module AoC.Y2023.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.Y2023.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.Y2023.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.Y2023.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.Y2023.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.Y2023.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.Y2023.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.Y2023.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.Y2023.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.Y2023.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.Y2023.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.Y2023.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.Y2023.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.Y2023.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.Y2023.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.Y2023.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.Y2023.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.Y2023.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.Y2023.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.Y2023.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.Y2023.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.Y2023.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.Y2023.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.Y2023.D25 (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.Year (Year (..)) where
|
||||
|
||||
data Year
|
||||
= Y0000
|
||||
| Y2023
|
||||
deriving stock (Read, Show, Eq, Ord, Enum)
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module AoC.Y0000.D00 (solve) where
|
||||
|
||||
import AoC.Riddle
|
||||
|
||||
solve :: (MonadIO m) => Text -> m (Either Text Solution)
|
||||
solve _ = pure $ Left "not yet implemented"
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
module AoC.Y0000 (solve) where
|
||||
|
||||
import AoC.Day
|
||||
import AoC.Riddle
|
||||
|
||||
import AoC.Y0000.D01 qualified as D01
|
||||
import AoC.Y0000.D02 qualified as D02
|
||||
import AoC.Y0000.D03 qualified as D03
|
||||
import AoC.Y0000.D04 qualified as D04
|
||||
import AoC.Y0000.D05 qualified as D05
|
||||
import AoC.Y0000.D06 qualified as D06
|
||||
import AoC.Y0000.D07 qualified as D07
|
||||
import AoC.Y0000.D08 qualified as D08
|
||||
import AoC.Y0000.D09 qualified as D09
|
||||
import AoC.Y0000.D10 qualified as D10
|
||||
import AoC.Y0000.D11 qualified as D11
|
||||
import AoC.Y0000.D12 qualified as D12
|
||||
import AoC.Y0000.D13 qualified as D13
|
||||
import AoC.Y0000.D14 qualified as D14
|
||||
import AoC.Y0000.D15 qualified as D15
|
||||
import AoC.Y0000.D16 qualified as D16
|
||||
import AoC.Y0000.D17 qualified as D17
|
||||
import AoC.Y0000.D18 qualified as D18
|
||||
import AoC.Y0000.D19 qualified as D19
|
||||
import AoC.Y0000.D20 qualified as D20
|
||||
import AoC.Y0000.D21 qualified as D21
|
||||
import AoC.Y0000.D22 qualified as D22
|
||||
import AoC.Y0000.D23 qualified as D23
|
||||
import AoC.Y0000.D24 qualified as D24
|
||||
import AoC.Y0000.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,6 +1,6 @@
|
|||
module AoCSpec.UtilSpec (spec) where
|
||||
module AoCSpec.InternalSpec (spec) where
|
||||
|
||||
import AoC.Util
|
||||
import AoC.Internal
|
||||
|
||||
import Test.Hspec
|
||||
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
module AoCSpec.Y2023Spec (spec) where
|
||||
|
||||
import AoC
|
||||
import Test.Hspec
|
||||
|
||||
spec :: Spec
|
||||
spec = do
|
||||
describe "Day 1" do
|
||||
it "calculates correctly" do
|
||||
runAoC Y2023 D01 `shouldReturn` Right [54331]
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
module SpecHook (hook) where
|
||||
|
||||
import Test.Hspec
|
||||
|
||||
hook :: Spec -> Spec
|
||||
hook = parallel
|
||||
Loading…
Add table
Add a link
Reference in a new issue