2020-01 part 1 in haskell
This commit is contained in:
parent
2725c523ae
commit
d74ab7641e
3 changed files with 235 additions and 0 deletions
6
2020/01/example
Normal file
6
2020/01/example
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
1721
|
||||||
|
979
|
||||||
|
366
|
||||||
|
299
|
||||||
|
675
|
||||||
|
1456
|
29
2020/01/first.hs
Normal file
29
2020/01/first.hs
Normal file
|
@ -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
|
200
2020/01/input
Normal file
200
2020/01/input
Normal file
|
@ -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
|
Loading…
Add table
Reference in a new issue