4
Day1/1.hs
Normal file
4
Day1/1.hs
Normal file
@@ -0,0 +1,4 @@
|
||||
import Lib (calories)
|
||||
|
||||
main :: IO ()
|
||||
main = print . maximum . calories =<< readFile "input"
|
6
Day1/2.hs
Normal file
6
Day1/2.hs
Normal file
@@ -0,0 +1,6 @@
|
||||
import Data.List (sortOn)
|
||||
import Data.Ord (Down (Down))
|
||||
import Lib (calories)
|
||||
|
||||
main :: IO ()
|
||||
main = print . sum . take 3 . sortOn Down . calories =<< readFile "input"
|
16
Day1/Lib.hs
Normal file
16
Day1/Lib.hs
Normal file
@@ -0,0 +1,16 @@
|
||||
module Lib (calories) where
|
||||
|
||||
calories :: String -> [Integer]
|
||||
calories input =
|
||||
map (sum . map read) $
|
||||
filter (not . null) $ split "" $ split '\n' input
|
||||
|
||||
split :: Eq a => a -> [a] -> [[a]]
|
||||
split del =
|
||||
foldr
|
||||
( \c (x : xs) ->
|
||||
if c == del
|
||||
then [] : x : xs
|
||||
else (c : x) : xs
|
||||
)
|
||||
[[]]
|
2237
Day1/input
Normal file
2237
Day1/input
Normal file
File diff suppressed because it is too large
Load Diff
43
flake.lock
generated
Normal file
43
flake.lock
generated
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1669926181,
|
||||
"narHash": "sha256-9UvqeOzNeVj1k3SmsRThcArP/IDos4OA4V38utDx7m8=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "60d042d7e30f35b598d244e2009d4bfc15052e04",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "release-22.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs",
|
||||
"utils": "utils"
|
||||
}
|
||||
},
|
||||
"utils": {
|
||||
"locked": {
|
||||
"lastModified": 1667395993,
|
||||
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
31
flake.nix
Normal file
31
flake.nix
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
description = "AoC 2022 in Haskell";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = github:nixos/nixpkgs/release-22.05;
|
||||
utils.url = github:numtide/flake-utils;
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, utils }:
|
||||
utils.lib.eachDefaultSystem
|
||||
(system:
|
||||
let
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
};
|
||||
in
|
||||
{
|
||||
devShells = with pkgs; rec {
|
||||
default = mkShell {
|
||||
buildInputs = [ ghc ];
|
||||
};
|
||||
withLsp = mkShell {
|
||||
buildInputs = [
|
||||
ghc
|
||||
haskell-language-server
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
Reference in New Issue
Block a user