1
0
Fork 0

Compare commits

...

3 Commits

Author SHA1 Message Date
Bill Ewanick 4906e74cf3 Advent of Code 2024 - Day 1 2024-12-01 23:36:10 -05:00
Bill Ewanick 51ae128a14 Go back to a `sum` in prelude 2024-12-01 23:36:10 -05:00
Bill Ewanick e0aab0618b Some python stuff??? 2024-12-01 23:35:06 -05:00
6 changed files with 1081 additions and 22 deletions

View File

@ -83,6 +83,9 @@
gofumpt gofumpt
nodejs nodejs
python310
black
]); ]);
shellHook = '' shellHook = ''

View File

@ -0,0 +1,38 @@
-- https://adventofcode.com/2024/day/1
import Data.List
import GHC.IO
input :: FilePath
input = "src/advent_of_code/2024/1.input"
entries :: ([Int], [Int])
entries = unzip $ map parse' $ unsafePerformIO $ lines <$> readFile input
main :: IO ()
main = do
entries <- lines <$> readFile input
print "Advent of Code 2024 - Day 1"
print $ "Part 1: " <> show (solveP1 $ unzip $ map parse' entries)
print $ "Part 2: " <> show (solveP2 $ unzip $ map parse' entries)
parse' :: String -> (Int, Int)
parse' str = (read l, read r)
where
l = take' str
r = reverse $ take' $ reverse str
take' = takeWhile (/= ' ')
solveP1 :: ([Int], [Int]) -> Int
solveP1 (as, bs) = sum $ zipWith (\i j -> abs (i - j)) as' bs'
where
as' = sort as
bs' = sort bs
solveP2 :: ([Int], [Int]) -> Int
solveP2 (as, bs) = sum $ zipWith (*) as (map (f bs) as)
where
f :: [Int] -> Int -> Int
f bs a = length $ elemIndices a bs

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,6 @@
3 4
4 3
2 5
1 3
3 9
3 3

View File

@ -5,9 +5,6 @@ The sum of these multiples is 23.
Find the sum of all the multiples of 3 or 5 below 1000. Find the sum of all the multiples of 3 or 5 below 1000.
-} -}
{-# OPTIONS_GHC -Wno-unrecognised-pragmas #-}
{-# HLINT ignore "Use sum" #-}
module Main where module Main where
import Data.List (union) import Data.List (union)
@ -16,26 +13,13 @@ main :: IO ()
main = print ans main = print ans
ans :: Integer ans :: Integer
ans = sum $ allNumbersUnder 1000 ans = sum (_3s <> _5s)
sum' :: Num a => [a] -> a
sum' = foldl (+) 0
isMultipleOf :: Integral a => a -> a -> Bool
isMultipleOf n x = x `rem` n == 0
all3sUnder :: Integral a => a -> [a]
all3sUnder n = filter (isMultipleOf 3) [1..n-1]
all5sUnder :: Integral a => a -> [a]
all5sUnder n = filter (isMultipleOf 5) [1..n-1]
allXsUnderN :: Integral a => a -> a -> [a]
allXsUnderN x n = filter (isMultipleOf x) [1..n-1]
allNumbersUnder :: Integral a => a -> [a]
allNumbersUnder l = allXsUnderN 3 l <> allXsUnderN 5 l
_3s :: [Integer]
_3s = [3,6..999] _3s = [3,6..999]
_5s :: [Integer]
_5s = [5,10..999] _5s = [5,10..999]
solution :: Integer
solution = sum $ union _3s _5s solution = sum $ union _3s _5s

28
src/python/2.py Normal file
View File

@ -0,0 +1,28 @@
fibs2 = [1, 2, 3, 5, 8, 13]
i = 1
j = 2
b = 0
n = 4000000
fibs = []
fibs.append(i)
fibs.append(j)
while b < n:
b = i + j
if b < n:
fibs.append(b)
else:
fibs
i = j
j = b
count = 0
for fib in fibs:
if (fib % 2) == 0:
count += fib
else:
count += 0
print(count)