Split datafile finding into a library
authorNeil Smith <NeilNjae@users.noreply.github.com>
Tue, 6 Dec 2022 12:03:40 +0000 (12:03 +0000)
committerNeil Smith <NeilNjae@users.noreply.github.com>
Tue, 6 Dec 2022 12:03:40 +0000 (12:03 +0000)
advent-of-code22.cabal
advent01/Main.hs
advent02/Main.hs
advent03/Main.hs
advent04/Main-interval.hs
advent04/Main.hs
advent05/Main.hs
advent06/Main.hs
lib/AoC.hs [new file with mode: 0644]

index f258fd83010009e0221bede630d572d28eda5ba9..747359d0c08c179c481be8d304e0a245198c9468 100644 (file)
@@ -73,6 +73,8 @@ common common-extensions
 common build-directives
   build-depends:       base >=4.16
   default-language:    Haskell2010
+  hs-source-dirs:      ., app, lib
+  other-modules:       AoC
   ghc-options:         -O2 
                        -Wall 
                        -threaded 
@@ -87,9 +89,15 @@ executable advent-of-code22
     -- LANGUAGE extensions used by modules in this package.
     -- other-extensions:
     build-depends:    base ^>=4.16.4.0
-    hs-source-dirs:   app
+    hs-source-dirs:   app, lib
     default-language: Haskell2010
 
+library
+  import: common-extensions
+  build-depends:  base >=4.16
+  hs-source-dirs: ., app, lib
+  exposed-modules: AoC
+
 executable advent01
   import: common-extensions, build-directives
   main-is: advent01/Main.hs
index 5a45a1e272caea1a53c2d90a3968e0978cdb69c9..cd136382bea6e7779b9a4e6902bdd438f329251d 100644 (file)
@@ -1,6 +1,6 @@
 -- Writeup at https://work.njae.me.uk/2022/12/01/advent-of-code-2022-day-1/
 
-import System.Environment
+import AoC
 import Data.List
 import Data.List.Split
 import Data.Ord
@@ -13,16 +13,6 @@ main =
       print $ part1 calories
       print $ part2 calories
 
-getDataFileName :: IO String
-getDataFileName =
-  do args <- getArgs
-     progName <- getProgName
-     let baseDataName =  if null args
-                         then progName
-                         else head args 
-     let dataFileName = "data/" ++ baseDataName ++ ".txt"
-     return dataFileName
-
 part1 :: [[Int]] -> Int
 part1 = maximum . fmap sum
 
index 44a236173b398a9e5005ebb10c2be8f952f61eb0..231531749fb68bb0ca9d11b7654e15eb3ae06c47 100644 (file)
@@ -1,6 +1,6 @@
 -- Writeup at https://work.njae.me.uk/2022/12/02/advent-of-code-2022-day-2/
 
-import System.Environment
+import AoC
 import Data.Text ()
 import qualified Data.Text.IO as TIO
 import Data.Attoparsec.Text hiding (Result)
@@ -20,16 +20,6 @@ main =
       let match2 = successfulParse2 text
       print $ part2 match2
 
-getDataFileName :: IO String
-getDataFileName =
-  do args <- getArgs
-     progName <- getProgName
-     let baseDataName =  if null args
-                         then progName
-                         else head args 
-     let dataFileName = "data/" ++ baseDataName ++ ".txt"
-     return dataFileName
-
 part1 :: [Round] -> Int
 part1 = sum . fmap scoreRound
 
index 8ebba26fd8398332f51144bdb3432dd488bb251a..fa01d402ccce5337f514a1e5740394afb2488628 100644 (file)
@@ -1,6 +1,6 @@
 -- Writeup at https://work.njae.me.uk/2022/12/03/advent-of-code-2022-day-3/
 
-import System.Environment
+import AoC
 import Data.Char
 import qualified Data.Set as S
 import Data.List
@@ -17,16 +17,6 @@ main =
       print $ part1 rucksacks
       print $ part2 rucksacks
 
-getDataFileName :: IO String
-getDataFileName =
-  do args <- getArgs
-     progName <- getProgName
-     let baseDataName =  if null args
-                         then progName
-                         else head args 
-     let dataFileName = "data/" ++ baseDataName ++ ".txt"
-     return dataFileName
-
 part1 :: [Rucksack] -> Int
 part1 = sum . fmap (priority . commonItem)
 
index 7888faee5d8670d2ac17e1d63107eb078972f2cd..6ec57baf1fdd72fb458bde7db225910565903f62 100644 (file)
@@ -1,6 +1,6 @@
 -- Writeup at https://work.njae.me.uk/2022/12/04/advent-of-code-2022-day-4/
 
-import System.Environment
+import AoC
 import Data.Text (Text)
 import qualified Data.Text.IO as TIO
 import Data.Attoparsec.Text hiding (Result)
@@ -18,16 +18,6 @@ main =
       print $ part1 pairs
       print $ part2 pairs
 
-getDataFileName :: IO String
-getDataFileName =
-  do args <- getArgs
-     progName <- getProgName
-     let baseDataName =  if null args
-                         then progName
-                         else head args 
-     let dataFileName = "data/" ++ baseDataName ++ ".txt"
-     return dataFileName
-
 part1 :: [Pair] -> Int
 part1 = length . (filter hasContainment)
 
index a295abfe1bfb30d8249c1fd39c499a2e3ef7ab74..537d7c6754a8c0a4c5fc839d4c331735030f8f38 100644 (file)
@@ -1,6 +1,6 @@
 -- Writeup at https://work.njae.me.uk/2022/12/04/advent-of-code-2022-day-4/
 
-import System.Environment
+import AoC
 import Data.Text (Text)
 import qualified Data.Text.IO as TIO
 import Data.Attoparsec.Text hiding (Result)
@@ -17,16 +17,6 @@ main =
       print $ part1 pairs
       print $ part2 pairs
 
-getDataFileName :: IO String
-getDataFileName =
-  do args <- getArgs
-     progName <- getProgName
-     let baseDataName =  if null args
-                         then progName
-                         else head args 
-     let dataFileName = "data/" ++ baseDataName ++ ".txt"
-     return dataFileName
-
 part1 :: [Pair] -> Int
 part1 = length . (filter hasContainment)
 
index 21daf434eb0f17035f9b4542a926e88e56235291..0b60f36fa0383dd000f6cadb345dba9a2976d915 100644 (file)
@@ -1,6 +1,6 @@
 -- Writeup at https://work.njae.me.uk/2022/12/04/advent-of-code-2022-day-4/
 
-import System.Environment
+import AoC
 import Data.Text (Text)
 import qualified Data.Text.IO as TIO
 import Data.Attoparsec.Text hiding (take)
@@ -26,18 +26,6 @@ main =
       putStrLn $ part1 wharf moves
       putStrLn $ part2 wharf moves
 
-
-getDataFileName :: IO String
-getDataFileName =
-  do args <- getArgs
-     progName <- getProgName
-     let baseDataName =  if null args
-                         then progName
-                         else head args 
-     let dataFileName = "data/" ++ baseDataName ++ ".txt"
-     return dataFileName
-
-
 part1 :: Wharf -> [Move] -> String
 part1 wharf moves = showTops $ applyMoves1 wharf moves
 
index 02dd902992b6ad6ebda7ea5a645b93940b6bdbd6..9852e8a65d732d6a28fdad90ea3a2c5788038465 100644 (file)
@@ -1,6 +1,6 @@
 -- Writeup at https://work.njae.me.uk/2022/12/06/advent-of-code-2022-day-6/
 
-import System.Environment
+import AoC
 import Data.List
 
 -- test = "mjqjpqmgbljsphdztnvjfqwrcgsmlb"
@@ -14,16 +14,6 @@ main =
       print $ part1 text
       print $ part2 text
 
-getDataFileName :: IO String
-getDataFileName =
-  do args <- getArgs
-     progName <- getProgName
-     let baseDataName =  if null args
-                         then progName
-                         else head args 
-     let dataFileName = "data/" ++ baseDataName ++ ".txt"
-     return dataFileName
-
 part1 :: String -> Int
 part1 = interestingPosition 4
 
diff --git a/lib/AoC.hs b/lib/AoC.hs
new file mode 100644 (file)
index 0000000..764f2cc
--- /dev/null
@@ -0,0 +1,13 @@
+module AoC ( getDataFileName ) where
+
+import System.Environment
+
+getDataFileName :: IO String
+getDataFileName =
+  do args <- getArgs
+     progName <- getProgName
+     let baseDataName =  if null args
+                         then progName
+                         else head args 
+     let dataFileName = "data/" ++ baseDataName ++ ".txt"
+     return dataFileName