Merge Sander's branch into benchmark branch
commit
9139bf11fc
|
|
@ -0,0 +1,51 @@
|
|||
-- AOC 2025 - Sander
|
||||
|
||||
-- so for those wondering about how I run this Haskell code, here's the setup:
|
||||
-- 1) install GHCup as instructed from https://www.haskell.org/ghcup/
|
||||
-- 2) save this haskell file and your AOC input file in some directory on your computer
|
||||
-- 3) rewrite the "main" function with the location of your AOC input file
|
||||
-- 4) rewrite "print contents" in the "main" function to use the function(s) you've made to process the input file ("contents") from that day correctly
|
||||
-- 5) run Command Prompt, go to the directory of your files (with "cd" command) and run the command "ghci AOC2025.hs"
|
||||
-- 6) run command "main"
|
||||
-- 7) if your functions are correct, you'll get the correct answer!
|
||||
|
||||
import System.IO
|
||||
import Control.Monad
|
||||
|
||||
main :: IO()
|
||||
main = do handle <- openFile "C:/Users/[your directory here]/d1.txt" ReadMode
|
||||
contents <- hGetContents handle
|
||||
print (doday1_1 contents)
|
||||
hClose handle
|
||||
|
||||
-- Day 1: ...
|
||||
|
||||
-- Part One (correct)
|
||||
|
||||
doday1_1 :: String -> String
|
||||
doday1_1 input = show (countZeroRotations (words input) 50)
|
||||
|
||||
countZeroRotations :: [String] -> Int -> Int
|
||||
countZeroRotations [] _ = 0
|
||||
countZeroRotations (x : xs) pos = countZeroRotations xs (fst (rotateDial x pos)) + snd (rotateDial x pos)
|
||||
|
||||
rotateDial :: String -> Int -> (Int, Int)
|
||||
rotateDial (direction : r) pos
|
||||
| direction == 'L' && newposl == 0 = (normalizeHundred newposl, 1)
|
||||
| direction == 'L' = (normalizeHundred newposl, 0)
|
||||
| direction == 'R' && newposr == 0 = (normalizeHundred newposr, 1)
|
||||
| direction == 'R' = (normalizeHundred newposr, 0)
|
||||
where newposl = normalizeHundred (pos - (read r))
|
||||
newposr = normalizeHundred (pos + (read r))
|
||||
|
||||
normalizeHundred :: Int -> Int
|
||||
normalizeHundred x
|
||||
| x >= 0 && x < 100 = x
|
||||
| x >= 100 = normalizeHundred (x - 100)
|
||||
| x < 0 = normalizeHundred (x + 100)
|
||||
| True = x
|
||||
|
||||
-- Part Two
|
||||
|
||||
doday1_2 :: String -> String
|
||||
doday1_2 input = undefined
|
||||
Loading…
Reference in New Issue