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
|
build-type: Simple
|
||||||
extra-source-files:
|
extra-source-files:
|
||||||
README.org
|
README.org
|
||||||
data-dir: data
|
|
||||||
|
|
||||||
library
|
library
|
||||||
exposed-modules:
|
exposed-modules:
|
||||||
AoC
|
AoC
|
||||||
AoC.Day
|
AoC.Internal
|
||||||
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
|
|
||||||
other-modules:
|
other-modules:
|
||||||
Paths_aoc
|
Paths_aoc
|
||||||
autogen-modules:
|
autogen-modules:
|
||||||
|
|
@ -59,8 +29,7 @@ library
|
||||||
BlockArguments
|
BlockArguments
|
||||||
OverloadedStrings
|
OverloadedStrings
|
||||||
ImportQualifiedPost
|
ImportQualifiedPost
|
||||||
DerivingStrategies
|
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
|
||||||
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
|
|
||||||
build-depends:
|
build-depends:
|
||||||
base
|
base
|
||||||
, containers
|
, containers
|
||||||
|
|
@ -69,7 +38,7 @@ library
|
||||||
, text
|
, text
|
||||||
mixins:
|
mixins:
|
||||||
base hiding (Prelude)
|
base hiding (Prelude)
|
||||||
, relude (Relude as Prelude, Relude, Relude.Unsafe, Relude.Extra.Enum)
|
, relude (Relude as Prelude)
|
||||||
default-language: GHC2021
|
default-language: GHC2021
|
||||||
|
|
||||||
executable aoc
|
executable aoc
|
||||||
|
|
@ -84,8 +53,7 @@ executable aoc
|
||||||
BlockArguments
|
BlockArguments
|
||||||
OverloadedStrings
|
OverloadedStrings
|
||||||
ImportQualifiedPost
|
ImportQualifiedPost
|
||||||
DerivingStrategies
|
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
|
||||||
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
|
|
||||||
build-depends:
|
build-depends:
|
||||||
aoc
|
aoc
|
||||||
, base
|
, base
|
||||||
|
|
@ -95,7 +63,7 @@ executable aoc
|
||||||
, text
|
, text
|
||||||
mixins:
|
mixins:
|
||||||
base hiding (Prelude)
|
base hiding (Prelude)
|
||||||
, relude (Relude as Prelude, Relude, Relude.Unsafe, Relude.Extra.Enum)
|
, relude (Relude as Prelude)
|
||||||
default-language: GHC2021
|
default-language: GHC2021
|
||||||
|
|
||||||
test-suite doctest
|
test-suite doctest
|
||||||
|
|
@ -111,8 +79,7 @@ test-suite doctest
|
||||||
BlockArguments
|
BlockArguments
|
||||||
OverloadedStrings
|
OverloadedStrings
|
||||||
ImportQualifiedPost
|
ImportQualifiedPost
|
||||||
DerivingStrategies
|
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
|
||||||
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
|
|
||||||
build-tool-depends:
|
build-tool-depends:
|
||||||
doctest:doctest
|
doctest:doctest
|
||||||
build-depends:
|
build-depends:
|
||||||
|
|
@ -124,16 +91,14 @@ test-suite doctest
|
||||||
, text
|
, text
|
||||||
mixins:
|
mixins:
|
||||||
base hiding (Prelude)
|
base hiding (Prelude)
|
||||||
, relude (Relude as Prelude, Relude, Relude.Unsafe, Relude.Extra.Enum)
|
, relude (Relude as Prelude)
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
|
|
||||||
test-suite spec
|
test-suite spec
|
||||||
type: exitcode-stdio-1.0
|
type: exitcode-stdio-1.0
|
||||||
main-is: Spec.hs
|
main-is: Spec.hs
|
||||||
other-modules:
|
other-modules:
|
||||||
AoCSpec.UtilSpec
|
AoCSpec.InternalSpec
|
||||||
AoCSpec.Y2023Spec
|
|
||||||
SpecHook
|
|
||||||
Paths_aoc
|
Paths_aoc
|
||||||
autogen-modules:
|
autogen-modules:
|
||||||
Paths_aoc
|
Paths_aoc
|
||||||
|
|
@ -143,8 +108,7 @@ test-suite spec
|
||||||
BlockArguments
|
BlockArguments
|
||||||
OverloadedStrings
|
OverloadedStrings
|
||||||
ImportQualifiedPost
|
ImportQualifiedPost
|
||||||
DerivingStrategies
|
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
|
||||||
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
|
|
||||||
cpp-options: -DTEST
|
cpp-options: -DTEST
|
||||||
build-tool-depends:
|
build-tool-depends:
|
||||||
hspec-discover:hspec-discover
|
hspec-discover:hspec-discover
|
||||||
|
|
@ -160,5 +124,5 @@ test-suite spec
|
||||||
, text
|
, text
|
||||||
mixins:
|
mixins:
|
||||||
base hiding (Prelude)
|
base hiding (Prelude)
|
||||||
, relude (Relude as Prelude, Relude, Relude.Unsafe, Relude.Extra.Enum)
|
, relude (Relude as Prelude)
|
||||||
default-language: GHC2021
|
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:
|
extra-source-files:
|
||||||
- README.org
|
- README.org
|
||||||
|
|
||||||
data-dir: data
|
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: base
|
- name: base
|
||||||
mixin:
|
mixin:
|
||||||
- hiding (Prelude)
|
- hiding (Prelude)
|
||||||
- name: relude
|
- name: relude
|
||||||
mixin:
|
mixin:
|
||||||
- (Relude as Prelude, Relude, Relude.Unsafe, Relude.Extra.Enum)
|
- (Relude as Prelude)
|
||||||
- containers
|
- containers
|
||||||
- text
|
- text
|
||||||
- megaparsec
|
- megaparsec
|
||||||
|
|
@ -26,7 +24,6 @@ ghc-options:
|
||||||
- -Weverything
|
- -Weverything
|
||||||
- -Wno-implicit-prelude
|
- -Wno-implicit-prelude
|
||||||
- -Wno-missing-import-lists # Requires explicit imports of _every_ function (e.g. ‘$’); too strict
|
- -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-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-all-missed-specialisations # See missed-specialisations
|
||||||
- -Wno-unsafe # Don’t use Safe Haskell warnings
|
- -Wno-unsafe # Don’t use Safe Haskell warnings
|
||||||
|
|
@ -43,11 +40,9 @@ default-extensions:
|
||||||
- BlockArguments
|
- BlockArguments
|
||||||
- OverloadedStrings
|
- OverloadedStrings
|
||||||
- ImportQualifiedPost
|
- ImportQualifiedPost
|
||||||
- DerivingStrategies
|
|
||||||
|
|
||||||
library:
|
library:
|
||||||
source-dirs: src
|
source-dirs: src
|
||||||
generated-other-modules: Paths_aoc
|
|
||||||
verbatim:
|
verbatim:
|
||||||
default-language: GHC2021
|
default-language: GHC2021
|
||||||
|
|
||||||
|
|
|
||||||
25
src/AoC.hs
25
src/AoC.hs
|
|
@ -1,32 +1,21 @@
|
||||||
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
|
|
||||||
module AoC (
|
module AoC (
|
||||||
defaultMain,
|
defaultMain,
|
||||||
runAoC,
|
|
||||||
module AoC.Day,
|
|
||||||
module AoC.Year,
|
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import AoC.Day
|
|
||||||
import AoC.Riddle
|
|
||||||
import AoC.Year
|
|
||||||
|
|
||||||
import Control.Exception qualified as Exception
|
import Control.Exception qualified as Exception
|
||||||
import System.IO (hPutStrLn)
|
import System.IO (hPutStrLn)
|
||||||
import System.IO.Error qualified as IOError
|
import System.IO.Error qualified as IOError
|
||||||
|
|
||||||
import AoC.Y2023 qualified as Y2023
|
runAoC :: [String] -> IO ()
|
||||||
|
runAoC _args = putStrLn "Hello"
|
||||||
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"
|
|
||||||
|
|
||||||
handleError :: IOError.IOError -> IO ()
|
handleError :: IOError.IOError -> IO ()
|
||||||
handleError e = do
|
handleError e = do
|
||||||
hPutStrLn stderr $ "I ran into an issue: " <> show e
|
hPutStrLn stderr $ "I ran into an issue: " <> show e
|
||||||
|
|
||||||
defaultMain :: IO ()
|
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.
|
-- | 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 :: (MonadIO m) => FilePath -> m Text
|
||||||
readFileUtf8 = fmap (decodeUtf8With lenientDecode) . readFileBS
|
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
|
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