aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Dessaux2023-03-06 23:48:00 +0100
committerJulien Dessaux2023-03-06 23:48:00 +0100
commitd74ab7641eda7a78dbf1f55d438bdb16bb27dd37 (patch)
tree443f0b8589096b3ad29af6f470e80388fdf6cf1c
parent2022-01 in haskell (diff)
downloadadvent-of-code-d74ab7641eda7a78dbf1f55d438bdb16bb27dd37.tar.gz
advent-of-code-d74ab7641eda7a78dbf1f55d438bdb16bb27dd37.tar.bz2
advent-of-code-d74ab7641eda7a78dbf1f55d438bdb16bb27dd37.zip
2020-01 part 1 in haskell
-rw-r--r--2020/01/example6
-rw-r--r--2020/01/first.hs29
-rw-r--r--2020/01/input200
3 files changed, 235 insertions, 0 deletions
diff --git a/2020/01/example b/2020/01/example
new file mode 100644
index 0000000..e3fb011
--- /dev/null
+++ b/2020/01/example
@@ -0,0 +1,6 @@
+1721
+979
+366
+299
+675
+1456
diff --git a/2020/01/first.hs b/2020/01/first.hs
new file mode 100644
index 0000000..5a615a9
--- /dev/null
+++ b/2020/01/first.hs
@@ -0,0 +1,29 @@
+module Main where
+
+import Control.Monad (when)
+import Data.Maybe (catMaybes, fromJust)
+import System.Exit (die)
+
+exampleExpectedOutput = 514579
+
+compute2020 :: Int -> Int -> Maybe Int
+compute2020 a b
+ | a + b == 2020 = Just (a * b)
+ | otherwise = Nothing
+
+compute :: String -> Int
+compute input = head . catMaybes $ processInput inputList
+ where
+ inputList :: [Int]
+ inputList = map read $ lines input
+ processInput :: [Int] -> [Maybe Int]
+ processInput (_:[]) = [Nothing]
+ processInput (x:xs) = map (compute2020 x) xs ++ processInput xs
+
+main :: IO ()
+main = do
+ example <- readFile "example"
+ let exampleOutput = compute example
+ when (exampleOutput /= exampleExpectedOutput) (die $ "example failed: got " ++ show exampleOutput ++ " instead of " ++ show exampleExpectedOutput)
+ input <- readFile "input"
+ print $ compute input
diff --git a/2020/01/input b/2020/01/input
new file mode 100644
index 0000000..8f18073
--- /dev/null
+++ b/2020/01/input
@@ -0,0 +1,200 @@
+1962
+1577
+1750
+1836
+1762
+1691
+1726
+1588
+1370
+1043
+1307
+1552
+1813
+1804
+1765
+1893
+1610
+764
+1512
+1404
+1711
+1000
+1694
+1546
+1880
+1721
+2006
+1787
+1510
+1850
+1420
+1712
+1926
+1707
+1983
+1680
+1436
+389
+1448
+1875
+1333
+1733
+1935
+1794
+1337
+1863
+1769
+1635
+1499
+1807
+1326
+1989
+1705
+1673
+1829
+1684
+1716
+456
+1696
+1398
+1942
+1851
+1690
+1328
+1356
+1775
+1564
+1466
+1273
+1896
+766
+1814
+1810
+1537
+1463
+1755
+1341
+1665
+1520
+1366
+1387
+1976
+1717
+1737
+1551
+1760
+1496
+1664
+1450
+1319
+1674
+1630
+1301
+1330
+1658
+1637
+1655
+1439
+1832
+1948
+1339
+1656
+1449
+1296
+1489
+1758
+1939
+1857
+1402
+1394
+1882
+1446
+1412
+1430
+1212
+1377
+1501
+1873
+1812
+1667
+1560
+1654
+1575
+1999
+1581
+1792
+1299
+1843
+1383
+1351
+1297
+1822
+1801
+1977
+1316
+1477
+1980
+1693
+1220
+1554
+1607
+1903
+1669
+1593
+1955
+1286
+1909
+1280
+1854
+2005
+1820
+1803
+1763
+1660
+1410
+1974
+1808
+1816
+1723
+1936
+1423
+1818
+1800
+1294
+857
+496
+1248
+1670
+1993
+1929
+1966
+1381
+1259
+1285
+1797
+1644
+1919
+1267
+1509
+399
+1300
+1662
+1556
+1747
+1517
+1972
+1729
+1506
+1544
+1957
+1930
+1956
+1753
+1284
+1389
+1689
+1709
+1627
+1770
+847