diff --git a/day1/input b/day1/input new file mode 100644 index 0000000..7205e6f --- /dev/null +++ b/day1/input @@ -0,0 +1,200 @@ +1977 +1802 +1856 +1309 +2003 +1854 +1898 +1862 +1857 +542 +1616 +1599 +1628 +1511 +1848 +1623 +1959 +1693 +1444 +1211 +1551 +1399 +1855 +1538 +1869 +1664 +1719 +1241 +1875 +1733 +1547 +1813 +1531 +1773 +624 +1336 +1897 +1179 +1258 +1205 +1727 +1364 +1957 +540 +1970 +1273 +1621 +1964 +1723 +1699 +1847 +1249 +1254 +1644 +1449 +1794 +1797 +1713 +1534 +1202 +1951 +1598 +1926 +1865 +1294 +1893 +1641 +1325 +1432 +1960 +413 +1517 +1724 +1715 +1458 +1775 +1317 +1694 +1484 +1840 +1999 +1811 +1578 +1658 +1906 +1481 +1313 +1997 +1339 +1592 +1971 +1453 +1706 +1884 +1956 +1384 +1579 +1689 +1726 +1217 +1796 +1536 +1213 +1867 +1304 +2010 +1503 +1665 +1361 +814 +2007 +1430 +1625 +1958 +860 +1799 +1942 +1876 +1772 +1198 +1221 +1814 +1826 +1667 +1334 +1504 +1420 +1164 +1414 +1934 +1823 +1507 +1195 +21 +1752 +1472 +1196 +1558 +1322 +1927 +1556 +1922 +277 +1828 +1883 +1280 +1947 +1231 +1915 +1235 +1961 +1494 +1324 +2009 +1367 +1545 +1736 +1575 +1214 +1704 +1833 +1663 +1474 +1894 +1754 +1564 +1321 +1119 +1975 +1987 +1873 +1834 +1686 +1574 +1505 +1656 +1688 +1896 +1982 +1554 +1990 +1902 +1859 +1293 +1739 +1282 +1889 +1981 +1283 +1687 +1220 +1443 +1409 +1252 +1506 +1742 +1319 +1882 +951 +1849 diff --git a/day1/main.hs b/day1/main.hs new file mode 100755 index 0000000..c9ef9fe --- /dev/null +++ b/day1/main.hs @@ -0,0 +1,37 @@ +#! /usr/bin/env -S"ANSWER=42" nix-shell +#! nix-shell -p ghcid +#! nix-shell -p "haskellPackages.ghcWithPackages (p: with p; [shower])" +#! nix-shell -i "ghcid -c 'ghci -Wall' -T main" + +{-# LANGUAGE OverloadedStrings #-} + +-- [...] find the two entries that sum to 2020 and then multiply those two +-- numbers together. + +testData :: [Int] +testData = [ 1721 , 979 , 366 , 299 , 675 , 1456 ] + +realData :: [Int] +realData = [ 1977 , 1802 , 1856 , 1309 , 2003 , 1854 , 1898 , 1862 , 1857 , 542 , 1616 , 1599 , 1628 , 1511 , 1848 , 1623 , 1959 , 1693 , 1444 , 1211 , 1551 , 1399 , 1855 , 1538 , 1869 , 1664 , 1719 , 1241 , 1875 , 1733 , 1547 , 1813 , 1531 , 1773 , 624 , 1336 , 1897 , 1179 , 1258 , 1205 , 1727 , 1364 , 1957 , 540 , 1970 , 1273 , 1621 , 1964 , 1723 , 1699 , 1847 , 1249 , 1254 , 1644 , 1449 , 1794 , 1797 , 1713 , 1534 , 1202 , 1951 , 1598 , 1926 , 1865 , 1294 , 1893 , 1641 , 1325 , 1432 , 1960 , 413 , 1517 , 1724 , 1715 , 1458 , 1775 , 1317 , 1694 , 1484 , 1840 , 1999 , 1811 , 1578 , 1658 , 1906 , 1481 , 1313 , 1997 , 1339 , 1592 , 1971 , 1453 , 1706 , 1884 , 1956 , 1384 , 1579 , 1689 , 1726 , 1217 , 1796 , 1536 , 1213 , 1867 , 1304 , 2010 , 1503 , 1665 , 1361 , 814 , 2007 , 1430 , 1625 , 1958 , 860 , 1799 , 1942 , 1876 , 1772 , 1198 , 1221 , 1814 , 1826 , 1667 , 1334 , 1504 , 1420 , 1164 , 1414 , 1934 , 1823 , 1507 , 1195 , 21 , 1752 , 1472 , 1196 , 1558 , 1322 , 1927 , 1556 , 1922 , 277 , 1828 , 1883 , 1280 , 1947 , 1231 , 1915 , 1235 , 1961 , 1494 , 1324 , 2009 , 1367 , 1545 , 1736 , 1575 , 1214 , 1704 , 1833 , 1663 , 1474 , 1894 , 1754 , 1564 , 1321 , 1119 , 1975 , 1987 , 1873 , 1834 , 1686 , 1574 , 1505 , 1656 , 1688 , 1896 , 1982 , 1554 , 1990 , 1902 , 1859 , 1293 , 1739 , 1282 , 1889 , 1981 , 1283 , 1687 , 1220 , 1443 , 1409 , 1252 , 1506 , 1742 , 1319 , 1882 , 951 , 1849 ] + +solve1 :: [Int] -> Maybe Int +solve1 l = lookup 2020 $ do + x <- l + y <- l + pure (x+y,x*y) + +solve2 :: [Int] -> Maybe Int +solve2 l = lookup 2020 $ do + x <- l + y <- l + z <- l + pure (x+y+z,x*y*z) + +main :: IO () +main = do + putStrLn "Day 1 - Part 1" + print $ solve1 testData + print $ solve1 realData + putStrLn "Day 1 - Part 2" + print $ solve2 testData + print $ solve2 realData