From 6b1960cb97e7036a40070b9ad4be7af794abadcb Mon Sep 17 00:00:00 2001 From: Jonathan Chan Date: Tue, 10 Dec 2024 08:50:44 -0500 Subject: [PATCH] Reorganizing files into folders --- .gitignore | 6 ------ README.md | 4 ++-- 01.txt => input/01.txt | 0 02.txt => input/02.txt | 0 04.txt => input/04.txt | 0 05.txt => input/05.txt | 0 06.txt => input/06.txt | 0 07.txt => input/07.txt | 0 07_cumulate.txt => input/07_cumulate.txt | 0 07_tree.txt => input/07_tree.txt | 0 08.txt => input/08.txt | 0 09.txt => input/09.txt | 0 10.txt => input/10.txt | 0 11.txt => input/11.txt | 0 12.txt => input/12.txt | 0 13.txt => input/13.txt | 0 16.txt => input/16.txt | 0 18.txt => input/18.txt | 0 19.txt => input/19.txt | 0 20.txt => input/20.txt | 0 21.txt => input/21.txt | 0 22.txt => input/22.txt | 0 23.txt => input/23.txt | 0 24.txt => input/24.txt | 0 25.txt => input/25.txt | 0 01.hs => src/01.hs | 2 +- 02.hs => src/02.hs | 2 +- 03.hs => src/03.hs | 0 04.hs => src/04.hs | 2 +- 05.hs => src/05.hs | 2 +- 05_alt.hs => src/05_alt.hs | 2 +- 06.hs => src/06.hs | 2 +- 07.hs => src/07.hs | 2 +- 08.hs => src/08.hs | 2 +- 09.hs => src/09.hs | 2 +- 10.hs => src/10.hs | 2 +- 11.hs => src/11.hs | 2 +- 12.hs => src/12.hs | 2 +- 13.hs => src/13.hs | 2 +- 14.hs => src/14.hs | 0 15.hs => src/15.hs | 0 16.hs => src/16.hs | 2 +- 17.hs => src/17.hs | 0 17.js => src/17.js | 0 18a.hs => src/18a.hs | 2 +- 18b.hs => src/18b.hs | 2 +- 19.hs => src/19.hs | 2 +- 20.hs => src/20.hs | 2 +- 21.hs => src/21.hs | 2 +- 22a.hs => src/22a.hs | 2 +- 22b.hs => src/22b.hs | 2 +- 23.hs => src/23.hs | 2 +- 23b.c => src/23b.c | 0 24.hs => src/24.hs | 2 +- 25.hs => src/25.hs | 0 55 files changed, 25 insertions(+), 31 deletions(-) rename 01.txt => input/01.txt (100%) rename 02.txt => input/02.txt (100%) rename 04.txt => input/04.txt (100%) rename 05.txt => input/05.txt (100%) rename 06.txt => input/06.txt (100%) rename 07.txt => input/07.txt (100%) rename 07_cumulate.txt => input/07_cumulate.txt (100%) rename 07_tree.txt => input/07_tree.txt (100%) rename 08.txt => input/08.txt (100%) rename 09.txt => input/09.txt (100%) rename 10.txt => input/10.txt (100%) rename 11.txt => input/11.txt (100%) rename 12.txt => input/12.txt (100%) rename 13.txt => input/13.txt (100%) rename 16.txt => input/16.txt (100%) rename 18.txt => input/18.txt (100%) rename 19.txt => input/19.txt (100%) rename 20.txt => input/20.txt (100%) rename 21.txt => input/21.txt (100%) rename 22.txt => input/22.txt (100%) rename 23.txt => input/23.txt (100%) rename 24.txt => input/24.txt (100%) rename 25.txt => input/25.txt (100%) rename 01.hs => src/01.hs (78%) rename 02.hs => src/02.hs (75%) rename 03.hs => src/03.hs (100%) rename 04.hs => src/04.hs (80%) rename 05.hs => src/05.hs (86%) rename 05_alt.hs => src/05_alt.hs (93%) rename 06.hs => src/06.hs (94%) rename 07.hs => src/07.hs (95%) rename 08.hs => src/08.hs (89%) rename 09.hs => src/09.hs (92%) rename 10.hs => src/10.hs (92%) rename 11.hs => src/11.hs (94%) rename 12.hs => src/12.hs (85%) rename 13.hs => src/13.hs (83%) rename 14.hs => src/14.hs (100%) rename 15.hs => src/15.hs (100%) rename 16.hs => src/16.hs (91%) rename 17.hs => src/17.hs (100%) rename 17.js => src/17.js (100%) rename 18a.hs => src/18a.hs (94%) rename 18b.hs => src/18b.hs (95%) rename 19.hs => src/19.hs (96%) rename 20.hs => src/20.hs (92%) rename 21.hs => src/21.hs (94%) rename 22a.hs => src/22a.hs (95%) rename 22b.hs => src/22b.hs (93%) rename 23.hs => src/23.hs (95%) rename 23b.c => src/23b.c (100%) rename 24.hs => src/24.hs (87%) rename 25.hs => src/25.hs (100%) diff --git a/.gitignore b/.gitignore index 8b27ff4..e69de29 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +0,0 @@ -* -!.gitignore -!*.hs -!*.c -!*.js -!*.txt \ No newline at end of file diff --git a/README.md b/README.md index 889f906..74f9ffd 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,9 @@ Hopefully most of these solutions are fairly self-explanatory. I'll write longer-length explanations for more complex questions. ## Posts -[Day 3: Spiral Memory](https://medium.com/@nonphatic/advent-of-code-day-3-30db5599e914) ([problem description](http://adventofcode.com/2017/day/3)) +[Day 3: Spiral Memory](https://ionathan.ch/2017/12/04/advent-of-code-2017-day-3) ([problem description](http://adventofcode.com/2017/day/3)) -[Day 23: Coprocessor Conflagration](https://medium.com/@nonphatic/advent-of-code-2017-day-23-a29ee2d4bab8) ([problem description](http://adventofcode.com/2017/day/23)) +[Day 23: Coprocessor Conflagration](https://ionathan.ch/2017/12/25/advent-of-code-2017-day-23) ([problem description](http://adventofcode.com/2017/day/23)) ## Runtimes These are the runtimes of only one trial but the variances are fairly small and the focus is on the differences in runtime among the different solutions to see which have comparatively worse performance. diff --git a/01.txt b/input/01.txt similarity index 100% rename from 01.txt rename to input/01.txt diff --git a/02.txt b/input/02.txt similarity index 100% rename from 02.txt rename to input/02.txt diff --git a/04.txt b/input/04.txt similarity index 100% rename from 04.txt rename to input/04.txt diff --git a/05.txt b/input/05.txt similarity index 100% rename from 05.txt rename to input/05.txt diff --git a/06.txt b/input/06.txt similarity index 100% rename from 06.txt rename to input/06.txt diff --git a/07.txt b/input/07.txt similarity index 100% rename from 07.txt rename to input/07.txt diff --git a/07_cumulate.txt b/input/07_cumulate.txt similarity index 100% rename from 07_cumulate.txt rename to input/07_cumulate.txt diff --git a/07_tree.txt b/input/07_tree.txt similarity index 100% rename from 07_tree.txt rename to input/07_tree.txt diff --git a/08.txt b/input/08.txt similarity index 100% rename from 08.txt rename to input/08.txt diff --git a/09.txt b/input/09.txt similarity index 100% rename from 09.txt rename to input/09.txt diff --git a/10.txt b/input/10.txt similarity index 100% rename from 10.txt rename to input/10.txt diff --git a/11.txt b/input/11.txt similarity index 100% rename from 11.txt rename to input/11.txt diff --git a/12.txt b/input/12.txt similarity index 100% rename from 12.txt rename to input/12.txt diff --git a/13.txt b/input/13.txt similarity index 100% rename from 13.txt rename to input/13.txt diff --git a/16.txt b/input/16.txt similarity index 100% rename from 16.txt rename to input/16.txt diff --git a/18.txt b/input/18.txt similarity index 100% rename from 18.txt rename to input/18.txt diff --git a/19.txt b/input/19.txt similarity index 100% rename from 19.txt rename to input/19.txt diff --git a/20.txt b/input/20.txt similarity index 100% rename from 20.txt rename to input/20.txt diff --git a/21.txt b/input/21.txt similarity index 100% rename from 21.txt rename to input/21.txt diff --git a/22.txt b/input/22.txt similarity index 100% rename from 22.txt rename to input/22.txt diff --git a/23.txt b/input/23.txt similarity index 100% rename from 23.txt rename to input/23.txt diff --git a/24.txt b/input/24.txt similarity index 100% rename from 24.txt rename to input/24.txt diff --git a/25.txt b/input/25.txt similarity index 100% rename from 25.txt rename to input/25.txt diff --git a/01.hs b/src/01.hs similarity index 78% rename from 01.hs rename to src/01.hs index 64af5e1..0f7314e 100644 --- a/01.hs +++ b/src/01.hs @@ -8,6 +8,6 @@ halfwaySum ns = main :: IO () main = do - nums <- map (read . pure) <$> readFile "01.txt" + nums <- map (read . pure) <$> readFile "../input/01.txt" print $ circularSum nums print $ halfwaySum nums \ No newline at end of file diff --git a/02.hs b/src/02.hs similarity index 75% rename from 02.hs rename to src/02.hs index b984ccd..e735433 100644 --- a/02.hs +++ b/src/02.hs @@ -10,6 +10,6 @@ divline ns = main :: IO () main = do - grid <- map (map read . words) . lines <$> readFile "02.txt" + grid <- map (map read . words) . lines <$> readFile "../input/02.txt" print $ sum . map (\line -> maximum line - minimum line) $ grid print $ sum . map divline $ grid \ No newline at end of file diff --git a/03.hs b/src/03.hs similarity index 100% rename from 03.hs rename to src/03.hs diff --git a/04.hs b/src/04.hs similarity index 80% rename from 04.hs rename to src/04.hs index 7092d5b..9d5de2d 100644 --- a/04.hs +++ b/src/04.hs @@ -6,7 +6,7 @@ isPassphraseValid ws = sort ws == (toAscList . fromList) ws main :: IO () main = do - passphrases <- map words . lines <$> readFile "04.txt" + passphrases <- map words . lines <$> readFile "../input/04.txt" let valids = sum $ map (fromEnum . isPassphraseValid) passphrases let stillValids = sum $ map (fromEnum . isPassphraseValid . (map sort)) passphrases print $ valids diff --git a/05.hs b/src/05.hs similarity index 86% rename from 05.hs rename to src/05.hs index 6a46257..978dd36 100644 --- a/05.hs +++ b/src/05.hs @@ -15,7 +15,7 @@ getExitSteps len f state@(!steps, i, _) = main :: IO () main = do - jumpsList <- map read . lines <$> readFile "05.txt" + jumpsList <- map read . lines <$> readFile "../input/05.txt" let jumpsMap = fromList $ zip [0..] jumpsList print $ getExitSteps (length jumpsList) (+1) (0, 0, jumpsMap) print $ getExitSteps (length jumpsList) (\v -> if v >= 3 then v - 1 else v + 1) (0, 0, jumpsMap) \ No newline at end of file diff --git a/05_alt.hs b/src/05_alt.hs similarity index 93% rename from 05_alt.hs rename to src/05_alt.hs index 8ec5a96..7f4969a 100644 --- a/05_alt.hs +++ b/src/05_alt.hs @@ -15,6 +15,6 @@ getExitSteps f (steps, i, jumps) = main :: IO () main = do - jumpsList <- fmap (fromList . map read . lines) $ readFile "5.txt" + jumpsList <- fmap (fromList . map read . lines) $ readFile "../input/5.txt" print $ getExitSteps (+1) (0, 0, jumpsList) print $ getExitSteps (\v -> if v >= 3 then v - 1 else v + 1) (0, 0, jumpsList) \ No newline at end of file diff --git a/06.hs b/src/06.hs similarity index 94% rename from 06.hs rename to src/06.hs index b26e8d5..d0ef094 100644 --- a/06.hs +++ b/src/06.hs @@ -33,5 +33,5 @@ cycles prevCount (prevBank, banks) = main :: IO () main = do - bank <- fromList . map read . words <$> readFile "06.txt" + bank <- fromList . map read . words <$> readFile "../input/06.txt" print $ cycles 0 (bank, empty) diff --git a/07.hs b/src/07.hs similarity index 95% rename from 07.hs rename to src/07.hs index 4b825ba..ac41dd1 100644 --- a/07.hs +++ b/src/07.hs @@ -64,7 +64,7 @@ findBalanced (Node _ forest) = main :: IO () main = do - programsList <- map parseLine . lines <$> readFile "07.txt" + programsList <- map parseLine . lines <$> readFile "../input/07.txt" let programsMap = fromList programsList bottomName = getBottom programsMap programsList balanced = findBalanced . cumulate $ mapToTree programsMap bottomName diff --git a/08.hs b/src/08.hs similarity index 89% rename from 08.hs rename to src/08.hs index 74f783b..186e0da 100644 --- a/08.hs +++ b/src/08.hs @@ -38,6 +38,6 @@ executeInstruction m (I r v s f) = main :: IO () main = do - maxima <- map (maximum . elems) . tail . scanl executeInstruction empty . map parseLine . lines <$> readFile "08.txt" + maxima <- map (maximum . elems) . tail . scanl executeInstruction empty . map parseLine . lines <$> readFile "../input/08.txt" print $ last maxima print $ maximum maxima \ No newline at end of file diff --git a/09.hs b/src/09.hs similarity index 92% rename from 09.hs rename to src/09.hs index 34e974d..e592fcf 100644 --- a/09.hs +++ b/src/09.hs @@ -12,4 +12,4 @@ scoreAndCount str = main :: IO () main = do - readFile "09.txt" >>= print . scoreAndCount \ No newline at end of file + readFile "../input/09.txt" >>= print . scoreAndCount \ No newline at end of file diff --git a/10.hs b/src/10.hs similarity index 92% rename from 10.hs rename to src/10.hs index dadf1c5..5bb5528 100644 --- a/10.hs +++ b/src/10.hs @@ -20,7 +20,7 @@ hash lengths state = foldl twist state lengths main :: IO () main = do - input <- readFile "10.txt" + input <- readFile "../input/10.txt" let lengths = map read $ splitOn "," input newLengths = map ord input ++ [17, 31, 73, 47, 23] (hashed, _, _) = hash lengths ([0..255], 0, 0) diff --git a/11.hs b/src/11.hs similarity index 94% rename from 11.hs rename to src/11.hs index 2419a49..13c7d29 100644 --- a/11.hs +++ b/src/11.hs @@ -23,6 +23,6 @@ getDistance (Coordinates x y z) = main :: IO () main = do - coordinates <- map getCoordinates . splitOn "," <$> readFile "11.txt" + coordinates <- map getCoordinates . splitOn "," <$> readFile "../input/11.txt" print $ getDistance $ fold coordinates print $ maximum . map getDistance . scanl mappend mempty $ coordinates \ No newline at end of file diff --git a/12.hs b/src/12.hs similarity index 85% rename from 12.hs rename to src/12.hs index c305eca..69279dd 100644 --- a/12.hs +++ b/src/12.hs @@ -9,6 +9,6 @@ parseLine str = main :: IO () main = do - graph <- array (0, 1999) . map parseLine . lines <$> readFile "12.txt" + graph <- array (0, 1999) . map parseLine . lines <$> readFile "../input/12.txt" print $ length $ reachable graph 0 print $ length $ scc graph \ No newline at end of file diff --git a/13.hs b/src/13.hs similarity index 83% rename from 13.hs rename to src/13.hs index af12979..569f418 100644 --- a/13.hs +++ b/src/13.hs @@ -24,6 +24,6 @@ anyCaught firewalls delay = main :: IO () main = do - firewalls <- map parseLine . lines <$> readFile "13.txt" + firewalls <- map parseLine . lines <$> readFile "../input/13.txt" print $ severity firewalls print $ findIndex not $ map (anyCaught firewalls) [0..] \ No newline at end of file diff --git a/14.hs b/src/14.hs similarity index 100% rename from 14.hs rename to src/14.hs diff --git a/15.hs b/src/15.hs similarity index 100% rename from 15.hs rename to src/15.hs diff --git a/16.hs b/src/16.hs similarity index 91% rename from 16.hs rename to src/16.hs index 31d5c1c..17ec0ff 100644 --- a/16.hs +++ b/src/16.hs @@ -42,7 +42,7 @@ applyDance (s, positions, swaps) str = main :: IO () main = do - moves <- map parseMove . splitOn "," <$> readFile "16.txt" + moves <- map parseMove . splitOn "," <$> readFile "../input/16.txt" let ip = [0..15]; ap = ['a'..'p'] state = dance moves (0, fromList $ zip ip ip, fromList $ zip ap ap) dances = iterate (applyDance state) ap diff --git a/17.hs b/src/17.hs similarity index 100% rename from 17.hs rename to src/17.hs diff --git a/17.js b/src/17.js similarity index 100% rename from 17.js rename to src/17.js diff --git a/18a.hs b/src/18a.hs similarity index 94% rename from 18a.hs rename to src/18a.hs index bd900f4..38b2c7e 100644 --- a/18a.hs +++ b/src/18a.hs @@ -66,6 +66,6 @@ recover instructions (reg, pos, freq, rec) = main :: IO () main = do - instructions <- fromList . map parseLine . lines <$> readFile "18.txt" + instructions <- fromList . map parseLine . lines <$> readFile "../input/18.txt" let initialState = (V.replicate 5 0, 0, 0, 0) print $ recover instructions initialState \ No newline at end of file diff --git a/18b.hs b/src/18b.hs similarity index 95% rename from 18b.hs rename to src/18b.hs index 6062f14..ee468ab 100644 --- a/18b.hs +++ b/src/18b.hs @@ -123,6 +123,6 @@ getCount instructions state = main :: IO () main = do - instructions <- fromList . map parseLine . lines <$> readFile "18.txt" + instructions <- fromList . map parseLine . lines <$> readFile "../input/18.txt" let initialState = (State (Program (V.replicate 5 0) 0 empty) (Program (V.replicate 5 0 // [(4, 1)]) 0 empty) (False, False) 0) print $ getCount instructions initialState \ No newline at end of file diff --git a/19.hs b/src/19.hs similarity index 96% rename from 19.hs rename to src/19.hs index df0cf5c..b796a58 100644 --- a/19.hs +++ b/src/19.hs @@ -28,7 +28,7 @@ traverseGrid letters grid state = traverseGrid letters grid $ nextState letters main :: IO () main = do - input <- readFile "19.txt" + input <- readFile "../input/19.txt" let rows = lines input Just start = (+1) <$> (elemIndex '|' $ head rows) letters = filter (not . (`elem` " +|-\n")) input diff --git a/20.hs b/src/20.hs similarity index 92% rename from 20.hs rename to src/20.hs index dbd490a..3be0e52 100644 --- a/20.hs +++ b/src/20.hs @@ -48,7 +48,7 @@ parseLine str = main :: IO () main = do - particles <- map parseLine . lines <$> readFile "20.txt" + particles <- map parseLine . lines <$> readFile "../input/20.txt" let distances = map (norm . position . updateParticle 400) particles print $ elemIndex (minimum distances) distances print $ length $ iterate stepParticles particles !! 40 \ No newline at end of file diff --git a/21.hs b/src/21.hs similarity index 94% rename from 21.hs rename to src/21.hs index 915554e..912de46 100644 --- a/21.hs +++ b/src/21.hs @@ -55,7 +55,7 @@ parseLine line = main :: IO () main = do - rules <- foldr parseLine empty . lines <$> readFile "21.txt" + rules <- foldr parseLine empty . lines <$> readFile "../input/21.txt" let iterations = map (length . filter (=='#')) $ iterate (enhance rules) ".#...####" print $ iterations !! 5 print $ iterations !! 18 \ No newline at end of file diff --git a/22a.hs b/src/22a.hs similarity index 95% rename from 22a.hs rename to src/22a.hs index f3dedb3..6209a9f 100644 --- a/22a.hs +++ b/src/22a.hs @@ -30,6 +30,6 @@ parseRow (y, xs) grid = foldr (\(x, c) currGrid -> insert (x, y) c currGrid) gri main :: IO () main = do - grid <- foldr parseRow empty . zip [-12..12] . map (zip [-12..12]) . lines <$> readFile "22.txt" + grid <- foldr parseRow empty . zip [-12..12] . map (zip [-12..12]) . lines <$> readFile "../input/22.txt" let (_, _, _, count) = iterate nextState (grid, (0, 0), North, 0) !! 10000 print $ count \ No newline at end of file diff --git a/22b.hs b/src/22b.hs similarity index 93% rename from 22b.hs rename to src/22b.hs index b5722d7..e9e948a 100644 --- a/22b.hs +++ b/src/22b.hs @@ -38,5 +38,5 @@ parseRow (y, xs) grid = foldr (\(x, c) currGrid -> insert (x, y) (charToEnum c) main :: IO () main = do - grid <- foldr parseRow empty . zip [-12..12] . map (zip [-12..12]) . lines <$> readFile "22.txt" + grid <- foldr parseRow empty . zip [-12..12] . map (zip [-12..12]) . lines <$> readFile "../input/22.txt" print $ stricterate 10000000 (grid, (0, 0), North, 0) \ No newline at end of file diff --git a/23.hs b/src/23.hs similarity index 95% rename from 23.hs rename to src/23.hs index 63b403f..c287639 100644 --- a/23.hs +++ b/src/23.hs @@ -65,6 +65,6 @@ count = main :: IO () main = do - instructions <- fromList . map parseLine . lines <$> readFile "23.txt" + instructions <- fromList . map parseLine . lines <$> readFile "../input/23.txt" print $ runInstructions instructions (State (V.replicate 8 0) 0 0) print $ count \ No newline at end of file diff --git a/23b.c b/src/23b.c similarity index 100% rename from 23b.c rename to src/23b.c diff --git a/24.hs b/src/24.hs similarity index 87% rename from 24.hs rename to src/24.hs index 113d223..26a2850 100644 --- a/24.hs +++ b/src/24.hs @@ -28,6 +28,6 @@ estBridge est port components = main :: IO () main = do - components <- fromList . map (\line -> let a : b : [] = splitOn "/" line in (read a, read b)) . lines <$> readFile "24.txt" + components <- fromList . map (\line -> let a : b : [] = splitOn "/" line in (read a, read b)) . lines <$> readFile "../input/24.txt" print $ bridgeStrength $ estBridge strongest 0 components print $ bridgeStrength $ estBridge longest 0 components \ No newline at end of file diff --git a/25.hs b/src/25.hs similarity index 100% rename from 25.hs rename to src/25.hs