From 6f5f1be338676f051cd39a92905f5e260ed3a32c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20B=C3=A4dorf?= Date: Thu, 2 Dec 2021 11:33:23 +0100 Subject: [PATCH] Day 2 --- 1-alt/aoc01.scala | 10 + 1-alt/input.txt | 2000 +++++++++++++++++++++++++++++++++++++++++++++ 1-alt/run.sh | 6 + 2/Cargo.lock | 5 + 2/Cargo.toml | 9 + 2/input | 1000 +++++++++++++++++++++++ 2/src/main.rs | 44 + shell.nix | 1 + 8 files changed, 3075 insertions(+) create mode 100644 1-alt/aoc01.scala create mode 100644 1-alt/input.txt create mode 100755 1-alt/run.sh create mode 100644 2/Cargo.lock create mode 100644 2/Cargo.toml create mode 100644 2/input create mode 100644 2/src/main.rs diff --git a/1-alt/aoc01.scala b/1-alt/aoc01.scala new file mode 100644 index 0000000..3b3cd29 --- /dev/null +++ b/1-alt/aoc01.scala @@ -0,0 +1,10 @@ +def main(args: Array[String]): Unit = { + val data: Seq[Int] = io.Source.fromFile("input.txt").getLines.filter(_.nonEmpty).map(_.toInt).toSeq + def solution(xs: Seq[Int]): Int = xs.sliding(2, 1).count{case Seq(a, b) => b > a} + + val part1 = solution(data) + val part2 = solution(data.sliding(3, 1).map(_.sum).toSeq) + + println(s"Part 1: $part1") + println(s"Part 2: $part2") +} diff --git a/1-alt/input.txt b/1-alt/input.txt new file mode 100644 index 0000000..ad0a3bd --- /dev/null +++ b/1-alt/input.txt @@ -0,0 +1,2000 @@ +130 +142 +148 +147 +157 +160 +162 +160 +165 +164 +171 +169 +160 +165 +167 +195 +197 +193 +192 +188 +192 +190 +189 +193 +215 +214 +191 +189 +191 +199 +188 +191 +196 +200 +215 +175 +176 +187 +178 +169 +172 +168 +181 +180 +163 +173 +206 +192 +175 +177 +180 +186 +216 +220 +212 +211 +213 +215 +208 +207 +208 +206 +204 +201 +196 +191 +192 +213 +211 +217 +213 +225 +232 +237 +236 +241 +249 +250 +244 +243 +256 +260 +253 +252 +278 +275 +279 +293 +292 +290 +302 +300 +297 +296 +306 +302 +292 +298 +297 +301 +302 +305 +312 +310 +305 +306 +313 +331 +332 +330 +335 +333 +329 +328 +345 +347 +346 +334 +331 +332 +333 +336 +338 +344 +342 +348 +357 +360 +366 +368 +367 +357 +358 +355 +356 +360 +364 +374 +366 +371 +346 +333 +332 +333 +350 +351 +350 +351 +360 +364 +365 +355 +380 +381 +386 +381 +384 +386 +388 +390 +416 +415 +440 +438 +436 +438 +439 +440 +443 +448 +460 +459 +455 +453 +445 +447 +444 +439 +446 +457 +454 +455 +451 +450 +449 +450 +454 +456 +450 +449 +471 +474 +476 +480 +479 +486 +493 +495 +505 +504 +514 +515 +519 +521 +516 +506 +507 +525 +541 +529 +528 +549 +556 +560 +578 +584 +592 +591 +593 +583 +552 +536 +531 +532 +538 +536 +542 +541 +545 +549 +563 +565 +567 +573 +572 +570 +569 +570 +550 +545 +561 +553 +554 +536 +537 +538 +539 +540 +543 +576 +575 +578 +570 +581 +584 +585 +590 +588 +590 +595 +590 +592 +590 +587 +588 +594 +590 +592 +584 +589 +600 +602 +606 +607 +606 +607 +608 +623 +621 +623 +632 +637 +633 +630 +631 +622 +619 +627 +619 +585 +573 +574 +578 +574 +573 +574 +579 +581 +595 +596 +617 +626 +628 +613 +618 +623 +612 +602 +601 +605 +586 +594 +604 +606 +608 +609 +606 +607 +615 +578 +587 +592 +597 +598 +594 +555 +549 +550 +549 +550 +549 +548 +540 +532 +525 +526 +538 +548 +547 +548 +553 +555 +560 +555 +553 +557 +566 +563 +564 +558 +561 +566 +563 +562 +559 +548 +551 +543 +561 +550 +569 +570 +568 +569 +571 +572 +571 +574 +575 +577 +576 +579 +580 +577 +579 +572 +559 +568 +569 +565 +559 +560 +582 +581 +573 +570 +571 +555 +566 +558 +548 +565 +580 +589 +585 +586 +585 +580 +579 +573 +557 +559 +558 +535 +539 +537 +550 +549 +586 +590 +591 +592 +593 +594 +595 +592 +591 +593 +599 +615 +611 +620 +631 +632 +619 +621 +623 +657 +656 +655 +663 +664 +669 +673 +676 +677 +681 +677 +680 +681 +685 +683 +682 +681 +680 +679 +688 +686 +685 +665 +684 +691 +711 +718 +719 +725 +719 +723 +716 +711 +710 +715 +717 +724 +726 +725 +733 +731 +734 +754 +755 +760 +759 +754 +755 +759 +765 +756 +769 +768 +764 +763 +765 +774 +777 +768 +778 +786 +784 +792 +785 +783 +788 +794 +795 +776 +777 +778 +777 +774 +786 +785 +795 +800 +799 +798 +801 +815 +822 +833 +839 +837 +797 +799 +804 +795 +827 +833 +832 +824 +828 +825 +832 +841 +869 +867 +866 +865 +861 +863 +867 +834 +831 +838 +844 +865 +869 +866 +882 +887 +906 +900 +922 +914 +916 +917 +914 +908 +924 +934 +942 +934 +936 +948 +930 +925 +923 +931 +934 +909 +910 +909 +902 +903 +907 +909 +907 +908 +909 +905 +900 +901 +907 +908 +932 +924 +916 +917 +916 +913 +912 +911 +910 +940 +930 +929 +935 +945 +942 +959 +952 +953 +948 +944 +962 +961 +927 +942 +943 +946 +958 +977 +976 +973 +982 +986 +992 +989 +986 +995 +1010 +1023 +1018 +1019 +1015 +1002 +1005 +990 +1000 +967 +970 +985 +986 +988 +1034 +1039 +1034 +1031 +1028 +1029 +1030 +1033 +1014 +1004 +1006 +991 +1003 +1000 +1003 +1005 +994 +996 +995 +996 +1008 +1003 +1004 +1018 +1013 +1004 +999 +984 +974 +975 +973 +974 +978 +979 +992 +994 +1000 +995 +994 +1029 +1020 +1019 +1018 +1017 +1006 +1005 +1009 +977 +999 +996 +978 +997 +998 +999 +1020 +1017 +1018 +1019 +1017 +1026 +1027 +1031 +1032 +1035 +1040 +1038 +1045 +1048 +1052 +1038 +1041 +1040 +1039 +1040 +1039 +1040 +1027 +1031 +1036 +1059 +1047 +1050 +1038 +1036 +1039 +1044 +1047 +1040 +1057 +1049 +1050 +1053 +1051 +1045 +1036 +1035 +1032 +1045 +1034 +1026 +996 +995 +993 +995 +985 +984 +991 +989 +990 +993 +995 +986 +980 +979 +986 +991 +978 +986 +967 +977 +969 +964 +966 +959 +952 +963 +960 +961 +962 +943 +948 +944 +957 +958 +944 +937 +941 +927 +918 +919 +912 +925 +896 +899 +898 +888 +902 +903 +907 +906 +888 +891 +892 +891 +872 +873 +888 +892 +893 +914 +917 +940 +938 +922 +921 +920 +901 +904 +901 +872 +887 +893 +890 +891 +909 +890 +893 +884 +892 +893 +903 +918 +921 +927 +915 +926 +927 +947 +944 +956 +962 +970 +982 +977 +986 +968 +976 +978 +980 +986 +988 +981 +980 +979 +983 +990 +1000 +1002 +1000 +1002 +1003 +1004 +1007 +1005 +1013 +1016 +997 +996 +989 +1023 +1027 +1023 +1010 +1009 +1011 +1012 +994 +993 +1009 +1022 +1024 +1037 +1050 +1059 +1056 +1055 +1054 +1055 +1054 +1053 +1047 +1044 +1046 +1044 +1057 +1059 +1061 +1060 +1063 +1056 +1054 +1053 +1059 +1056 +1051 +1055 +1056 +1050 +1049 +1054 +1070 +1079 +1082 +1081 +1082 +1084 +1081 +1087 +1103 +1077 +1078 +1054 +1056 +1057 +1065 +1067 +1068 +1069 +1086 +1072 +1055 +1060 +1092 +1095 +1096 +1111 +1115 +1111 +1116 +1140 +1154 +1155 +1150 +1162 +1140 +1108 +1111 +1112 +1142 +1128 +1161 +1166 +1159 +1202 +1203 +1204 +1198 +1199 +1205 +1244 +1245 +1271 +1275 +1268 +1275 +1273 +1272 +1300 +1316 +1313 +1326 +1331 +1339 +1342 +1344 +1349 +1339 +1344 +1345 +1352 +1356 +1353 +1356 +1345 +1354 +1356 +1357 +1367 +1368 +1362 +1363 +1376 +1389 +1391 +1374 +1373 +1349 +1348 +1350 +1347 +1348 +1347 +1338 +1340 +1341 +1340 +1344 +1370 +1373 +1371 +1372 +1375 +1391 +1380 +1369 +1371 +1370 +1360 +1342 +1343 +1340 +1339 +1335 +1317 +1310 +1315 +1320 +1346 +1349 +1318 +1331 +1309 +1336 +1345 +1350 +1349 +1347 +1350 +1347 +1346 +1347 +1374 +1373 +1351 +1348 +1345 +1349 +1363 +1365 +1364 +1367 +1371 +1404 +1407 +1408 +1410 +1403 +1410 +1418 +1417 +1416 +1417 +1423 +1427 +1424 +1419 +1410 +1412 +1413 +1381 +1382 +1379 +1382 +1385 +1382 +1383 +1381 +1384 +1393 +1407 +1400 +1397 +1390 +1389 +1367 +1375 +1373 +1372 +1373 +1377 +1381 +1384 +1387 +1384 +1406 +1412 +1414 +1390 +1392 +1390 +1365 +1363 +1365 +1370 +1371 +1373 +1363 +1366 +1379 +1380 +1377 +1375 +1370 +1386 +1383 +1380 +1400 +1401 +1427 +1428 +1401 +1405 +1407 +1398 +1399 +1427 +1429 +1454 +1455 +1459 +1458 +1452 +1440 +1430 +1431 +1424 +1417 +1416 +1421 +1424 +1422 +1430 +1434 +1446 +1467 +1468 +1477 +1478 +1481 +1475 +1462 +1463 +1464 +1454 +1447 +1425 +1440 +1429 +1417 +1431 +1423 +1438 +1412 +1441 +1437 +1448 +1449 +1464 +1458 +1450 +1449 +1456 +1446 +1455 +1456 +1447 +1448 +1442 +1440 +1425 +1424 +1431 +1465 +1462 +1466 +1465 +1447 +1442 +1447 +1423 +1420 +1421 +1419 +1430 +1419 +1416 +1418 +1421 +1415 +1420 +1417 +1418 +1416 +1415 +1419 +1425 +1431 +1434 +1435 +1438 +1441 +1429 +1427 +1428 +1427 +1435 +1438 +1430 +1424 +1425 +1415 +1412 +1415 +1405 +1403 +1404 +1402 +1399 +1405 +1406 +1414 +1425 +1429 +1433 +1393 +1414 +1430 +1435 +1438 +1423 +1424 +1425 +1427 +1428 +1429 +1426 +1427 +1428 +1431 +1428 +1430 +1433 +1421 +1420 +1414 +1421 +1423 +1415 +1416 +1420 +1424 +1435 +1422 +1408 +1401 +1405 +1418 +1412 +1398 +1399 +1433 +1430 +1431 +1430 +1431 +1429 +1425 +1446 +1447 +1434 +1426 +1433 +1434 +1432 +1445 +1443 +1452 +1451 +1443 +1441 +1415 +1416 +1439 +1456 +1460 +1454 +1460 +1477 +1479 +1460 +1488 +1474 +1457 +1459 +1463 +1468 +1465 +1463 +1467 +1479 +1472 +1475 +1474 +1475 +1476 +1477 +1481 +1475 +1481 +1480 +1478 +1448 +1476 +1475 +1476 +1461 +1485 +1484 +1485 +1478 +1477 +1476 +1479 +1475 +1456 +1458 +1465 +1458 +1464 +1461 +1477 +1502 +1482 +1483 +1484 +1485 +1495 +1493 +1511 +1513 +1518 +1530 +1521 +1525 +1528 +1530 +1531 +1533 +1559 +1560 +1566 +1574 +1573 +1557 +1563 +1569 +1561 +1559 +1556 +1560 +1574 +1575 +1578 +1580 +1579 +1576 +1600 +1603 +1567 +1574 +1573 +1569 +1574 +1583 +1582 +1581 +1577 +1582 +1587 +1583 +1576 +1579 +1578 +1584 +1585 +1600 +1590 +1582 +1574 +1570 +1578 +1575 +1572 +1583 +1584 +1569 +1566 +1559 +1534 +1526 +1542 +1539 +1544 +1546 +1539 +1540 +1541 +1566 +1569 +1570 +1573 +1567 +1570 +1571 +1574 +1583 +1579 +1585 +1584 +1581 +1598 +1603 +1607 +1609 +1611 +1612 +1615 +1616 +1623 +1627 +1638 +1637 +1644 +1645 +1646 +1647 +1646 +1653 +1651 +1652 +1666 +1663 +1668 +1666 +1660 +1665 +1661 +1677 +1690 +1691 +1692 +1701 +1702 +1703 +1714 +1710 +1715 +1714 +1713 +1723 +1707 +1708 +1724 +1728 +1748 +1759 +1760 +1758 +1757 +1758 +1760 +1764 +1773 +1753 +1750 +1751 +1758 +1769 +1766 +1751 +1742 +1728 +1733 +1732 +1740 +1742 +1743 +1769 +1750 +1761 +1762 +1764 +1765 +1761 +1765 +1769 +1778 +1779 +1777 +1778 +1759 +1740 +1741 +1742 +1740 +1741 +1740 +1739 +1744 +1758 +1757 +1785 +1788 +1798 +1793 +1799 +1780 +1804 +1807 +1813 +1815 +1804 +1813 +1818 +1819 +1806 +1807 +1808 +1807 +1808 +1810 +1824 +1840 +1847 +1840 +1838 +1841 +1815 +1826 +1832 +1825 +1813 +1809 +1826 +1835 +1834 +1830 +1831 +1841 +1838 +1819 +1824 +1815 +1808 +1812 +1811 +1812 +1813 +1793 +1792 +1794 +1787 +1779 +1770 +1761 +1759 +1768 +1769 +1768 +1767 +1766 +1765 +1766 +1779 +1775 +1771 +1765 +1767 +1772 +1770 +1775 +1776 +1783 +1773 +1767 +1771 +1775 +1778 +1781 +1803 +1802 +1803 +1804 +1791 +1794 +1774 +1762 +1764 +1793 +1792 +1798 +1796 +1801 +1809 +1818 +1820 +1822 +1818 +1804 +1803 +1821 +1822 +1820 +1822 +1815 +1816 +1809 +1810 +1833 +1845 +1815 +1824 +1823 +1806 +1808 +1813 +1804 +1805 +1797 +1798 +1800 +1791 +1790 +1789 +1783 +1785 +1786 +1790 +1780 +1786 +1814 +1815 +1816 +1818 +1807 +1785 +1789 +1790 +1780 +1791 +1792 +1793 +1794 +1813 +1800 +1795 +1809 +1810 +1813 +1791 +1793 +1792 +1790 +1792 +1795 +1816 +1835 +1851 +1856 +1855 +1856 +1869 +1868 +1872 +1876 +1872 +1866 +1865 +1868 +1871 +1860 +1862 +1860 +1862 +1863 +1876 +1884 +1890 +1893 +1892 +1891 +1892 +1891 +1893 +1900 +1901 +1915 +1926 +1921 +1928 +1905 +1906 +1894 +1890 +1884 +1885 +1880 +1883 +1887 +1882 +1881 +1882 +1885 +1884 +1883 +1889 +1897 +1902 +1906 +1911 +1893 +1898 +1897 +1885 +1891 +1892 +1882 +1903 +1906 +1911 +1905 +1885 +1886 +1880 +1884 +1860 +1868 +1876 +1877 +1870 +1877 +1895 +1896 +1897 +1900 +1905 +1910 +1902 +1894 +1895 +1892 +1897 +1893 +1890 +1891 +1883 +1884 +1867 +1866 +1857 +1839 +1835 +1836 +1833 +1846 +1849 +1860 +1861 +1858 +1856 +1857 +1870 +1858 +1862 +1881 +1882 +1883 +1887 +1865 +1864 +1854 +1855 +1858 +1871 +1869 +1856 +1857 +1862 +1868 +1870 +1868 +1873 +1854 +1850 +1849 +1848 +1849 +1858 +1861 +1862 +1868 +1866 +1878 +1879 +1878 +1879 +1887 +1886 +1891 +1886 +1888 +1890 +1889 +1885 +1921 +1929 +1923 +1925 +1922 +1923 +1922 +1926 +1936 +1948 +1943 +1945 +1946 +1948 +1947 +1956 +1963 +1979 +1985 +1987 +1974 +1976 +1966 +1968 +1936 +1929 +1927 +1921 +1938 +1919 +1920 +1909 +1908 +1920 +1910 +1892 +1895 +1908 +1911 +1916 +1922 +1923 +1938 +1941 +1937 +1952 +1955 +1966 +1960 +1961 +1983 +1953 +1960 +1961 +1959 +1917 +1918 +1911 +1915 +1939 +1941 +1938 +1917 +1928 +1930 +1924 +1922 +1921 +1925 +1924 +1923 +1927 +1913 +1926 +1945 +1954 +1944 +1918 +1922 +1914 +1915 +1916 +1917 +1882 +1873 +1857 +1856 +1852 +1858 +1860 +1874 +1864 +1865 +1867 +1872 +1880 +1879 +1887 +1890 +1874 +1875 +1877 +1895 +1917 +1909 +1941 +1963 +1969 +1971 +1988 +1989 +1985 +1986 +1979 +1985 +1986 +1988 +1997 +1994 +2000 +2002 +2005 +1999 +1996 +1995 +2014 +2009 +1994 +1983 +1995 +1994 +1998 +2001 +1996 +2015 +2003 +1998 +2012 +2013 +2000 +1997 +1999 +2003 +2006 +2008 +2011 +1992 +1989 +1988 +1989 +1976 +1978 +1998 +2003 +2001 +2004 +2001 +1983 +1984 +1983 +1985 +1986 +1983 +1981 +1980 +1993 +1998 +1991 +1998 +2019 +2010 +2009 +2035 +2032 +2031 +2022 +2019 +2020 +2022 +2021 +2018 +2019 +2020 +2029 +2028 +2030 +2033 +2038 +2031 +2037 +2075 +2064 +2048 +2049 +2061 +2060 +2061 +2059 +2061 +2068 +2088 +2097 diff --git a/1-alt/run.sh b/1-alt/run.sh new file mode 100755 index 0000000..ff89e62 --- /dev/null +++ b/1-alt/run.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +nix-shell \ + -p scala curl \ + --run \ + 'scala -e "$(curl https://gist.githubusercontent.com/machisuji/7bca405fac2612c5a9575c056204f773/raw/b7556120bfadd9faf2b2a91ce1907df9fca2cf66/aoc01.scala); main(Array[String]());"' diff --git a/2/Cargo.lock b/2/Cargo.lock new file mode 100644 index 0000000..9c3ccc5 --- /dev/null +++ b/2/Cargo.lock @@ -0,0 +1,5 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "aoc-2020-1" +version = "0.1.0" diff --git a/2/Cargo.toml b/2/Cargo.toml new file mode 100644 index 0000000..6f24acf --- /dev/null +++ b/2/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "aoc-2020-1" +version = "0.1.0" +authors = ["Benjamin Bädorf "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/2/input b/2/input new file mode 100644 index 0000000..83b7ae1 --- /dev/null +++ b/2/input @@ -0,0 +1,1000 @@ +forward 5 +down 8 +down 6 +down 7 +down 8 +forward 7 +down 3 +up 6 +forward 6 +down 2 +forward 5 +down 6 +up 3 +down 4 +forward 4 +down 6 +down 1 +up 5 +forward 5 +down 1 +down 7 +up 2 +down 7 +forward 1 +forward 6 +down 1 +up 1 +up 4 +forward 3 +forward 6 +forward 1 +forward 4 +up 3 +forward 1 +forward 4 +down 9 +forward 4 +forward 8 +up 8 +forward 5 +up 4 +up 3 +down 8 +forward 5 +down 4 +forward 1 +forward 7 +down 1 +forward 8 +down 4 +forward 2 +forward 7 +forward 9 +up 4 +down 3 +forward 7 +forward 6 +down 8 +forward 2 +forward 5 +forward 4 +down 6 +forward 6 +up 5 +down 3 +down 6 +down 5 +down 7 +down 8 +up 5 +down 5 +forward 5 +forward 4 +up 3 +down 7 +down 3 +forward 4 +down 2 +forward 4 +forward 3 +forward 4 +forward 9 +forward 6 +forward 8 +up 8 +down 8 +up 5 +down 4 +down 8 +up 7 +up 8 +down 6 +down 3 +forward 2 +forward 7 +up 1 +up 2 +forward 2 +down 7 +down 1 +up 9 +forward 6 +forward 4 +down 2 +up 6 +down 2 +down 1 +down 3 +up 6 +down 1 +down 8 +forward 7 +up 8 +forward 5 +forward 8 +down 8 +forward 6 +forward 8 +down 3 +down 4 +down 6 +up 2 +forward 6 +up 9 +forward 4 +forward 8 +up 4 +down 8 +forward 8 +down 8 +down 4 +down 5 +forward 7 +down 6 +down 6 +up 2 +up 1 +forward 7 +forward 8 +forward 4 +forward 9 +down 7 +forward 4 +up 5 +down 3 +up 4 +down 9 +down 2 +down 8 +forward 3 +forward 5 +forward 7 +forward 9 +forward 5 +forward 8 +forward 6 +forward 4 +forward 6 +forward 7 +forward 2 +down 1 +down 8 +down 4 +down 5 +down 6 +up 3 +up 2 +forward 4 +down 4 +forward 7 +up 6 +up 9 +down 1 +down 3 +down 1 +up 3 +up 1 +down 2 +up 5 +forward 1 +down 7 +forward 9 +down 4 +up 4 +down 6 +down 3 +forward 4 +up 6 +up 4 +forward 1 +up 7 +down 1 +down 7 +down 7 +forward 9 +down 3 +down 3 +forward 6 +down 2 +forward 7 +up 4 +up 8 +down 8 +forward 7 +forward 6 +down 7 +forward 5 +up 6 +up 6 +down 9 +up 6 +up 2 +forward 9 +forward 1 +up 5 +up 3 +down 9 +up 8 +down 7 +up 7 +forward 5 +down 7 +down 4 +forward 2 +forward 3 +forward 5 +down 1 +up 6 +down 6 +up 6 +down 8 +down 3 +down 4 +forward 9 +down 3 +forward 3 +up 1 +down 2 +forward 8 +down 7 +up 9 +forward 1 +down 3 +forward 1 +forward 8 +down 3 +forward 8 +forward 6 +down 1 +down 9 +forward 2 +down 1 +down 6 +up 1 +up 7 +down 9 +forward 6 +forward 5 +forward 2 +up 6 +down 6 +forward 6 +up 3 +down 7 +down 8 +forward 5 +down 7 +forward 8 +down 8 +forward 4 +down 6 +forward 4 +down 7 +up 5 +down 5 +down 5 +down 4 +down 3 +forward 8 +forward 1 +down 8 +down 2 +forward 3 +forward 7 +forward 3 +down 5 +down 6 +down 8 +down 6 +forward 9 +forward 4 +forward 8 +down 5 +down 7 +forward 4 +up 5 +down 8 +up 6 +up 7 +down 6 +down 8 +forward 3 +up 6 +forward 7 +down 4 +up 1 +up 8 +forward 3 +down 6 +down 1 +forward 7 +down 1 +down 9 +forward 6 +down 4 +forward 3 +forward 1 +down 5 +down 9 +down 9 +down 5 +down 8 +down 7 +forward 1 +forward 5 +down 2 +forward 2 +forward 1 +down 8 +forward 6 +down 3 +forward 4 +up 2 +up 8 +forward 7 +forward 4 +down 8 +up 6 +forward 3 +up 1 +up 2 +forward 5 +forward 9 +down 5 +forward 2 +forward 5 +up 6 +down 1 +down 1 +down 6 +forward 6 +down 7 +forward 5 +forward 8 +down 7 +down 5 +forward 9 +forward 1 +up 6 +down 7 +forward 1 +forward 4 +down 5 +down 6 +up 3 +up 8 +up 5 +down 8 +down 8 +down 6 +down 2 +down 3 +down 9 +forward 8 +forward 7 +forward 7 +up 5 +down 5 +forward 9 +up 8 +up 5 +forward 1 +down 9 +down 9 +forward 9 +forward 4 +forward 6 +up 9 +up 5 +up 3 +down 9 +up 7 +up 1 +down 3 +down 9 +down 7 +forward 6 +down 7 +forward 7 +forward 8 +down 2 +forward 5 +up 1 +down 6 +up 9 +forward 5 +up 9 +down 2 +down 3 +forward 5 +down 9 +forward 9 +forward 2 +forward 8 +down 1 +forward 8 +up 1 +forward 3 +up 1 +down 1 +forward 9 +down 2 +forward 2 +up 1 +up 8 +down 2 +down 7 +down 5 +up 2 +up 6 +down 9 +down 7 +down 7 +up 6 +up 8 +down 7 +forward 5 +down 4 +down 5 +up 8 +up 6 +down 6 +forward 6 +up 6 +down 1 +down 1 +down 1 +forward 1 +down 8 +down 4 +down 5 +down 2 +down 5 +up 8 +up 8 +down 3 +down 6 +down 1 +forward 6 +forward 5 +forward 1 +down 3 +down 4 +up 9 +down 3 +up 8 +forward 5 +down 5 +forward 2 +down 8 +down 2 +up 1 +forward 7 +up 8 +forward 7 +down 3 +down 1 +down 3 +forward 4 +down 5 +down 8 +forward 8 +forward 3 +forward 7 +down 7 +forward 4 +down 1 +forward 3 +up 2 +down 7 +down 1 +forward 4 +forward 7 +down 3 +down 1 +forward 4 +down 3 +forward 2 +up 9 +down 5 +down 9 +forward 5 +up 5 +down 3 +up 6 +up 8 +down 7 +down 3 +down 9 +forward 6 +forward 8 +forward 3 +down 6 +up 8 +forward 8 +forward 9 +down 4 +down 1 +forward 2 +down 2 +up 2 +down 5 +down 1 +down 3 +forward 4 +down 3 +up 8 +up 6 +up 5 +down 4 +forward 3 +up 6 +forward 6 +forward 2 +down 8 +down 5 +forward 3 +up 1 +forward 5 +forward 9 +forward 5 +down 5 +forward 3 +forward 6 +forward 5 +forward 3 +down 1 +down 1 +down 1 +down 9 +forward 8 +forward 2 +forward 4 +forward 8 +down 1 +up 8 +down 1 +down 6 +down 5 +up 8 +down 4 +forward 8 +forward 6 +down 6 +forward 2 +forward 7 +forward 2 +up 7 +forward 4 +up 1 +up 8 +down 3 +down 2 +down 3 +up 7 +down 9 +up 5 +down 1 +down 3 +up 5 +down 6 +up 9 +down 4 +down 7 +down 6 +down 4 +forward 5 +forward 6 +down 8 +forward 3 +forward 8 +up 5 +up 6 +up 8 +forward 8 +forward 1 +down 6 +forward 3 +forward 3 +forward 6 +down 3 +down 2 +forward 5 +down 5 +forward 6 +down 3 +down 9 +down 8 +down 6 +down 6 +forward 1 +up 5 +down 9 +forward 3 +forward 3 +down 2 +forward 8 +forward 3 +forward 2 +forward 5 +down 4 +down 1 +up 2 +down 1 +down 1 +forward 5 +down 7 +up 7 +down 9 +down 8 +down 6 +forward 3 +forward 5 +down 3 +down 6 +up 3 +up 2 +up 8 +down 3 +up 3 +down 6 +forward 7 +forward 4 +up 5 +forward 1 +up 3 +forward 8 +down 2 +down 5 +down 2 +forward 4 +forward 4 +down 4 +up 8 +down 1 +up 2 +forward 2 +forward 9 +forward 4 +down 3 +down 7 +forward 1 +down 2 +forward 8 +down 8 +forward 3 +down 7 +forward 9 +forward 6 +up 1 +forward 3 +up 2 +up 3 +forward 6 +down 8 +up 9 +down 2 +down 9 +down 6 +down 4 +forward 5 +forward 3 +up 7 +forward 7 +up 7 +up 6 +down 7 +down 2 +up 7 +down 5 +up 9 +forward 3 +up 6 +up 6 +up 6 +up 1 +forward 5 +forward 5 +down 8 +forward 6 +forward 7 +down 3 +down 4 +down 2 +down 4 +down 1 +forward 7 +down 7 +down 5 +forward 8 +up 6 +up 8 +forward 8 +forward 2 +forward 4 +down 6 +down 4 +down 2 +down 3 +forward 8 +forward 6 +down 3 +forward 7 +forward 4 +up 8 +down 9 +forward 5 +up 5 +up 5 +up 7 +forward 3 +up 1 +down 2 +forward 5 +forward 5 +up 1 +forward 4 +down 6 +up 5 +up 3 +forward 9 +down 9 +down 6 +down 1 +down 2 +down 4 +down 7 +forward 3 +up 5 +forward 2 +down 3 +forward 7 +up 8 +up 3 +forward 6 +up 7 +up 1 +up 2 +down 5 +forward 5 +down 3 +down 5 +down 6 +up 1 +down 2 +up 1 +forward 3 +down 3 +down 4 +down 6 +down 1 +down 3 +forward 9 +forward 1 +down 1 +up 3 +forward 4 +forward 7 +forward 4 +down 2 +forward 6 +forward 2 +forward 7 +down 9 +forward 8 +forward 3 +up 8 +down 9 +up 8 +forward 5 +forward 9 +down 4 +forward 1 +up 9 +forward 2 +down 6 +up 3 +forward 1 +forward 3 +forward 8 +down 7 +down 3 +down 5 +down 2 +down 2 +forward 4 +forward 1 +down 2 +up 8 +down 2 +forward 3 +down 2 +down 6 +down 1 +up 1 +down 7 +down 3 +forward 3 +forward 1 +forward 9 +down 9 +down 2 +up 1 +forward 9 +up 2 +down 2 +forward 3 +down 4 +forward 9 +forward 5 +up 5 +forward 2 +up 3 +forward 8 +down 3 +forward 5 +forward 5 +down 8 +up 9 +forward 7 +up 2 +up 2 +up 1 +up 7 +down 8 +forward 9 +forward 9 +up 6 +down 5 +forward 7 +down 9 +down 8 +down 5 +down 3 +down 2 +forward 6 +down 7 +forward 3 +up 5 +forward 1 +up 7 +forward 3 +down 5 +down 9 +down 8 +forward 2 +up 4 +forward 7 +forward 5 +forward 8 +forward 7 +up 7 +forward 4 +up 7 +down 9 +forward 1 +forward 3 +down 3 +forward 4 +down 3 +forward 3 +down 5 +down 1 +forward 6 +down 4 +down 3 +down 2 +up 1 +down 1 +down 6 +down 6 +forward 9 +down 5 +forward 1 +up 4 +forward 7 +down 8 +forward 1 +forward 9 +forward 7 +down 1 +down 3 +up 2 +down 5 +up 6 +forward 2 +up 2 +down 7 +down 9 +forward 3 +up 5 +up 7 +down 4 +forward 6 +down 8 +forward 7 +up 1 +up 4 +forward 4 +down 9 +forward 9 +forward 9 +down 3 +forward 5 +forward 1 +down 3 +down 8 +forward 7 +down 4 +forward 3 +down 3 +forward 8 +forward 2 +forward 6 +up 9 +forward 2 +down 9 +forward 2 +down 1 +forward 9 +up 1 +up 4 +up 1 +down 1 +forward 4 +up 9 +up 8 +down 1 +down 3 +down 2 +forward 9 +down 7 +down 4 +forward 2 +up 9 +down 7 +down 1 +down 9 +forward 2 +down 2 +forward 9 +down 5 +up 1 +down 3 +up 6 +down 4 +forward 8 +down 2 +down 2 +down 9 +forward 9 +forward 2 +down 1 +forward 6 +down 2 +up 4 +down 8 +up 4 +down 6 +down 2 +forward 7 +down 3 +up 3 +forward 1 +up 4 +forward 5 +down 7 +down 8 +forward 7 +forward 3 +down 5 +up 6 +down 7 +down 1 +up 7 +down 1 +forward 6 +forward 3 +forward 3 +forward 7 diff --git a/2/src/main.rs b/2/src/main.rs new file mode 100644 index 0000000..1680e0b --- /dev/null +++ b/2/src/main.rs @@ -0,0 +1,44 @@ +use std::fs; + +fn main() { + // part_1(); + part_2(); +} + +fn part_1() { + let contents = fs::read_to_string("./input").expect("Couldn't read file!"); + let position = contents + .lines() + .map(|s| { + let c: Vec<&str> = s.split(" ").collect(); + let num = c[1].parse::().unwrap(); + return (c[0].to_string(), num); + }) + .fold((0, 0), |acc, command| match command.0.as_str() { + "forward" => (acc.0 + command.1, acc.1), + "up" => (acc.0, acc.1 - command.1), + "down" => (acc.0, acc.1 + command.1), + _ => acc, + }); + + println!("{}", position.0 * position.1); +} + +fn part_2() { + let contents = fs::read_to_string("./input").expect("Couldn't read file!"); + let position = contents + .lines() + .map(|s| { + let c: Vec<&str> = s.split(" ").collect(); + let num = c[1].parse::().unwrap(); + return (c[0].to_string(), num); + }) + .fold((0, 0, 0), |acc, command| match command.0.as_str() { + "forward" => (acc.0 + command.1, acc.1, acc.2 + acc.1 * command.1), + "up" => (acc.0, acc.1 - command.1, acc.2), + "down" => (acc.0, acc.1 + command.1, acc.2), + _ => acc, + }); + + println!("{}", position.0 * position.2); +} diff --git a/shell.nix b/shell.nix index e25d8ef..9caf6e5 100644 --- a/shell.nix +++ b/shell.nix @@ -3,5 +3,6 @@ pkgs.mkShell { buildInputs = [ pkgs.rustup + pkgs.scala ]; }