haskell: 2015 01
This commit is contained in:
parent
19806663a7
commit
e79d03a7d9
1
2015/.inputs/01.txt
Normal file
1
2015/.inputs/01.txt
Normal file
File diff suppressed because one or more lines are too long
23
2015/haskell/.gitignore
vendored
Normal file
23
2015/haskell/.gitignore
vendored
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
dist
|
||||||
|
dist-*
|
||||||
|
cabal-dev
|
||||||
|
*.o
|
||||||
|
*.hi
|
||||||
|
*.hie
|
||||||
|
*.chi
|
||||||
|
*.chs.h
|
||||||
|
*.dyn_o
|
||||||
|
*.dyn_hi
|
||||||
|
.hpc
|
||||||
|
.hsenv
|
||||||
|
.cabal-sandbox/
|
||||||
|
cabal.sandbox.config
|
||||||
|
*.prof
|
||||||
|
*.aux
|
||||||
|
*.hp
|
||||||
|
*.eventlog
|
||||||
|
.stack-work/
|
||||||
|
cabal.project.local
|
||||||
|
cabal.project.local~
|
||||||
|
.HTF/
|
||||||
|
.ghc.environment.*
|
5
2015/haskell/CHANGELOG.md
Normal file
5
2015/haskell/CHANGELOG.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# Revision history for haskell
|
||||||
|
|
||||||
|
## 0.1.0.0 -- YYYY-mm-dd
|
||||||
|
|
||||||
|
* First version. Released on an unsuspecting world.
|
18
2015/haskell/app/Main.hs
Normal file
18
2015/haskell/app/Main.hs
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
module Main where
|
||||||
|
|
||||||
|
import Text.Printf (printf)
|
||||||
|
import qualified Day01
|
||||||
|
|
||||||
|
|
||||||
|
readDay :: Int -> IO String
|
||||||
|
readDay n = readFile $ getPath n
|
||||||
|
where
|
||||||
|
getPath n = "../.inputs/" <> printf "%02d" n <> ".txt"
|
||||||
|
|
||||||
|
|
||||||
|
main :: IO ()
|
||||||
|
main = do
|
||||||
|
content <- readDay 1
|
||||||
|
let parsed = Day01.parse content
|
||||||
|
print $ Day01.solve1 parsed
|
||||||
|
print $ Day01.solve2 parsed
|
46
2015/haskell/haskell.cabal
Normal file
46
2015/haskell/haskell.cabal
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
cabal-version: 3.0
|
||||||
|
name: haskell
|
||||||
|
version: 0.1.0.0
|
||||||
|
synopsis: Advent of Code 2015 solutions
|
||||||
|
|
||||||
|
-- A longer description of the package.
|
||||||
|
-- description:
|
||||||
|
homepage:
|
||||||
|
|
||||||
|
-- A URL where users can report bugs.
|
||||||
|
-- bug-reports:
|
||||||
|
license: MIT
|
||||||
|
author: Maciej Jur
|
||||||
|
maintainer: maciej@kamoshi.org
|
||||||
|
|
||||||
|
-- A copyright notice.
|
||||||
|
-- copyright:
|
||||||
|
-- category:
|
||||||
|
extra-source-files: CHANGELOG.md
|
||||||
|
|
||||||
|
library
|
||||||
|
exposed-modules: Day01
|
||||||
|
|
||||||
|
-- Modules included in this library but not exported.
|
||||||
|
-- other-modules:
|
||||||
|
|
||||||
|
-- LANGUAGE extensions used by modules in this package.
|
||||||
|
-- other-extensions:
|
||||||
|
build-depends: base ^>=4.16.4.0
|
||||||
|
hs-source-dirs: src
|
||||||
|
default-language: Haskell2010
|
||||||
|
|
||||||
|
executable haskell
|
||||||
|
main-is: Main.hs
|
||||||
|
|
||||||
|
-- Modules included in this executable, other than Main.
|
||||||
|
-- other-modules:
|
||||||
|
|
||||||
|
-- LANGUAGE extensions used by modules in this package.
|
||||||
|
-- other-extensions:
|
||||||
|
build-depends:
|
||||||
|
base ^>=4.16.4.0,
|
||||||
|
haskell
|
||||||
|
|
||||||
|
hs-source-dirs: app
|
||||||
|
default-language: Haskell2010
|
24
2015/haskell/src/Day01.hs
Normal file
24
2015/haskell/src/Day01.hs
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
module Day01 (parse, solve1, solve2) where
|
||||||
|
|
||||||
|
import Data.Char (isPrint)
|
||||||
|
import Data.List (scanl, findIndex)
|
||||||
|
import Data.Maybe (fromJust)
|
||||||
|
|
||||||
|
|
||||||
|
parse :: String -> String
|
||||||
|
parse = filter isPrint
|
||||||
|
|
||||||
|
mapper :: Char -> Int
|
||||||
|
mapper c = case c of
|
||||||
|
'(' -> 1
|
||||||
|
')' -> -1
|
||||||
|
_ -> undefined
|
||||||
|
|
||||||
|
solve1 :: String -> Int
|
||||||
|
solve1 = sum . map mapper
|
||||||
|
|
||||||
|
solve2 :: String -> Int
|
||||||
|
solve2 = fromJust . findIndex (<0) . scanl reducer 0
|
||||||
|
where
|
||||||
|
reducer acc next = acc + mapper next
|
||||||
|
|
4
2015/haskell/src/MyLib.hs
Normal file
4
2015/haskell/src/MyLib.hs
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
module MyLib (someFunc) where
|
||||||
|
|
||||||
|
someFunc :: IO ()
|
||||||
|
someFunc = putStrLn "someFunc"
|
Loading…
Reference in a new issue