Day 1! Off to a good start (I hope)
This commit is contained in:
parent
05460991c1
commit
def733add9
@ -32,3 +32,4 @@ executable aoc2022
|
|||||||
build-depends: base ^>=4.16.3.0
|
build-depends: base ^>=4.16.3.0
|
||||||
hs-source-dirs: app
|
hs-source-dirs: app
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
|
other-modules: Day1.Main
|
||||||
|
32
2022/app/Day1/Main.hs
Normal file
32
2022/app/Day1/Main.hs
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
module Day1.Main (main) where
|
||||||
|
|
||||||
|
import Data.List
|
||||||
|
import System.IO
|
||||||
|
import Control.Monad
|
||||||
|
|
||||||
|
main :: IO ()
|
||||||
|
main = do
|
||||||
|
putStrLn "Day 1"
|
||||||
|
|
||||||
|
handle <- openFile "app/Day1/input" ReadMode
|
||||||
|
contents <- hGetContents handle
|
||||||
|
|
||||||
|
let r1 = part1 contents
|
||||||
|
putStrLn $ "part 1: " ++ show r1
|
||||||
|
|
||||||
|
let r2 = part2 contents
|
||||||
|
putStrLn $ "part 2: " ++ show r2
|
||||||
|
|
||||||
|
parseInput :: String -> [Int]
|
||||||
|
parseInput contents = map sum foodItems
|
||||||
|
where
|
||||||
|
input = lines contents
|
||||||
|
elves = foldr (\a b -> if a == "" then [] : b else (a : head b) : tail b) [[]] input
|
||||||
|
foodItems = (map . map) (read :: String -> Int) elves
|
||||||
|
|
||||||
|
part1 :: String -> Int
|
||||||
|
part1 = maximum . parseInput
|
||||||
|
|
||||||
|
part2 :: String -> Int
|
||||||
|
part2 = sum . (take 3) . reverse . sort . parseInput
|
||||||
|
|
2249
2022/app/Day1/input
Normal file
2249
2022/app/Day1/input
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,7 @@
|
|||||||
module Main where
|
module Main where
|
||||||
|
|
||||||
|
import qualified Day1.Main as Day1
|
||||||
|
|
||||||
main :: IO ()
|
main :: IO ()
|
||||||
main = putStrLn "Hello, Haskell!"
|
main = do
|
||||||
|
Day1.main
|
||||||
|
13
2022/cabal.config
Normal file
13
2022/cabal.config
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
remote-repo-cache: /build/.cabal/packages
|
||||||
|
world-file: /build/.cabal/world
|
||||||
|
extra-prog-path: /build/.cabal/bin
|
||||||
|
build-summary: /build/.cabal/logs/build.log
|
||||||
|
remote-build-reporting: none
|
||||||
|
jobs: $ncpus
|
||||||
|
installdir: /build/.cabal/bin
|
||||||
|
haddock
|
||||||
|
init
|
||||||
|
install-dirs user
|
||||||
|
install-dirs global
|
||||||
|
program-locations
|
||||||
|
program-default-options
|
@ -21,5 +21,16 @@ pkgs.stdenv.mkDerivation rec {
|
|||||||
if pkgs.stdenv.isLinux
|
if pkgs.stdenv.isLinux
|
||||||
then "${pkgs.glibcLocales}/lib/locale/locale-archive"
|
then "${pkgs.glibcLocales}/lib/locale/locale-archive"
|
||||||
else "";
|
else "";
|
||||||
|
src = ./.;
|
||||||
|
|
||||||
|
# This currently doesn't work yet.
|
||||||
|
buildPhase = ''
|
||||||
|
export HOME=$TMP
|
||||||
|
mkdir -p $TMP/.cabal $out/bin
|
||||||
|
cp cabal.config $TMP/.cabal/config
|
||||||
|
cabal build
|
||||||
|
ln -s dist-newstyle/build/x86_64-linux/ghc-9.2.4/aoc2022-0.1.0.0/x/aoc2022/build/aoc2022/aoc2022 $out/bin/aoc2022
|
||||||
|
'';
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user