You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.2 KiB

module Main where
import Day1
import Day2
import Day3
import Day4
import Day5
import Day6
import Day7
import Day8
import Day9
import System.IO
import Data.List.Split
import Data.Set
import Text.ParserCombinators.ReadP
day1_fuel :: String -> [Fuel]
day1_fuel = fmap (calculateFuel . read) . lines
day2_instructions :: String -> [Integer]
day2_instructions = fmap read . splitOn ","
day2 :: (Integer, Integer) -> [Integer] -> Integer
day2 t = head . Day2.execute t
day2_look :: [Integer] -> Integer
day2_look xs = head $ [ 100*noun + verb |
noun <- [0..99],
verb <- [0..99],
day2 (noun, verb) xs == 19690720 ]
main :: IO ()
main = do
r_day1 <- readFile "./app/input_day1"
putStr "[Day 1-1] Fuel needed: "
let fs = day1_fuel r_day1
print $ sum fs
putStr "[Day 1-2] Fuel needed: "
print (sum fs + (sum . fmap calculateFuelOfFuel) fs)
r_day2 <- readFile "./app/input_day2"
let instructions = day2_instructions r_day2
putStr "[Day 2-1] Result: "
print $ day2 (12,2) instructions
putStr "[Day 2-2] Result: "
print $ day2_look instructions
r_day3 <- readFile "./app/input_day3"
putStr "[Day 3] Result: "
print $ getDistanceAndSteps r_day3
putStr "[Day 4-1] Result: "
print getNumberOfPasswords
putStr "[Day 4-2] Result: "
print getNumberOfPasswords'
r_day5 <- readFile "./app/input_day5"
putStr "[Day 5-1] Result: "
print . last $ Day5.execute 1 r_day5
putStr "[Day 5-2] Result: "
print . last $ Day5.execute 5 r_day5
r_day6 <- readFile "./app/input_day6"
putStr "[Day 6-1] Result: "
print $ countOrbits r_day6
putStr "[Day 6-2] Result: "
print $ nOrbits r_day6
r_day7 <- readFile "./app/input_day7"
putStr "[Day 7-1] Result: "
print $ findMaxAmp r_day7
putStr "[Day 7-2] Result: "
print $ findMaxAmpWithFB r_day7
r_day8 <- readFile "./app/input_day8"
putStr "[Day 8-1] Result: "
print $ day8_result1 r_day8
putStrLn "[Day 8-2] Result: "
day8_result2 r_day8
r_day9 <- readFile "./app/input_day9"
putStr "[Day 9-1] Result: "
print $ day9_result1 r_day9
putStr "[Day 9-2] Result: "
print $ day9_result2 r_day9