42 lines
1.1 KiB
Haskell
Executable File
42 lines
1.1 KiB
Haskell
Executable File
#! /usr/bin/env -S"ANSWER=42" nix-shell
|
|
#! nix-shell -p ghcid
|
|
#! nix-shell -p "haskellPackages.ghcWithPackages (p: with p; [pretty-simple])"
|
|
#! nix-shell -i "ghcid -c 'ghci' -T main"
|
|
|
|
{-# OPTIONS_GHC -Wall -Wincomplete-uni-patterns #-}
|
|
{-# OPTIONS_GHC -Wno-unused-top-binds -Wno-unused-imports #-}
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
|
|
import Debug.Trace (trace)
|
|
import Text.Pretty.Simple
|
|
import Data.List
|
|
|
|
smallExample :: [Int]
|
|
smallExample = [16,10,15,5,1,11,7,19,6,12,4]
|
|
|
|
biggerExample :: [Int]
|
|
biggerExample = [28,33,18,42,31,14,46,20,48,47,24,23,49,45,19,38,39,11,1,32,25
|
|
,35,8,17,7,9,4,2,34,10,3]
|
|
|
|
solvePart1 :: [Int] -> Int
|
|
solvePart1 xs = finally
|
|
$ span (== 1)
|
|
$ sort
|
|
$ map (\(x,y) -> y - x)
|
|
$ zip (0:sorted) sorted
|
|
where
|
|
sorted = sort xs
|
|
finally (x,y) = length x * ((length y)+1)
|
|
|
|
main :: IO ()
|
|
main = do
|
|
input' <- lines <$> readFile "day10/input"
|
|
let input = read <$> input'
|
|
putStrLn "Tests"
|
|
print $ smallExample
|
|
print $ biggerExample
|
|
putStrLn "Day 10 - Part 1"
|
|
print $ solvePart1 smallExample
|
|
print $ solvePart1 biggerExample
|
|
print $ solvePart1 input
|