solve day1 part1 and part2

This commit is contained in:
Johannes Loher 2020-12-01 10:43:51 +01:00
commit a38ef507e5
5 changed files with 499 additions and 0 deletions

28
.gitignore vendored Normal file
View file

@ -0,0 +1,28 @@
# Compiled Object files
*.o
*.obj
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
# Compiled Static libraries
*.a
*.lib
# Executables
*.exe
# DUB
.dub
docs.json
__dummy.html
docs/
# Code coverage
*.lst
# Main binaries
main

200
day1/part1/input Normal file
View file

@ -0,0 +1,200 @@
1935
1956
1991
1425
1671
1537
1984
1569
1873
1840
1720
1937
1823
1625
1727
1812
1714
1900
1939
1931
1951
1756
1942
1611
1979
1930
1996
2000
1544
1780
1687
1760
1836
1814
1691
1817
1964
1899
1577
1547
866
1560
1988
1601
1970
1738
1507
1667
1851
1933
1515
1856
1969
1860
1801
2007
1866
1800
1749
1843
1711
1495
1905
763
1672
1858
1987
1492
1849
1993
1737
1874
1658
1810
1665
1768
1950
1879
1816
1868
1995
1763
1783
1833
1968
1847
1748
1725
1891
1755
286
1976
1977
1655
1808
1986
1779
1861
1953
1888
1792
1811
1872
1790
1839
1985
1827
1842
1925
1735
1635
1821
1820
1973
1531
1770
59
1846
1932
1907
1730
933
1395
1753
1751
361
1530
1782
1087
1589
1929
1795
1815
1732
1765
1877
1722
526
1709
1789
1892
1913
1662
1809
1670
1947
1835
1587
1758
1982
2009
1757
670
1983
1524
1878
1796
1952
566
1922
1882
1870
1799
1731
1724
1805
2003
1596
1566
1853
1911
1857
1739
1744
1627
1729
1745
1845
1582
1884
1883
1941
1764
1685
1791
1837
1697
1742
1781
1948
1876
1989
1643
1871
1906
1726
1958
1502
1927
1946

32
day1/part1/main.d Normal file
View file

@ -0,0 +1,32 @@
import std;
void main()
{
File("input", "r").byLine.map!(to!int).array.multiply2EntriesThatSumTo(2020).writeln;
}
int multiply2EntriesThatSumTo(int[] input, int sum)
{
foreach (key1; input)
{
foreach (key2; input)
{
if (key2 == key1)
{
continue;
}
if (key1 + key2 == sum)
{
return key1 * key2;
}
}
}
return 0;
}
unittest
{
auto input = [1721, 979, 366, 299, 675, 1456];
assert(input.multiply2EntriesThatSumTo(2020) == 514579);
}

200
day1/part2/input Normal file
View file

@ -0,0 +1,200 @@
1935
1956
1991
1425
1671
1537
1984
1569
1873
1840
1720
1937
1823
1625
1727
1812
1714
1900
1939
1931
1951
1756
1942
1611
1979
1930
1996
2000
1544
1780
1687
1760
1836
1814
1691
1817
1964
1899
1577
1547
866
1560
1988
1601
1970
1738
1507
1667
1851
1933
1515
1856
1969
1860
1801
2007
1866
1800
1749
1843
1711
1495
1905
763
1672
1858
1987
1492
1849
1993
1737
1874
1658
1810
1665
1768
1950
1879
1816
1868
1995
1763
1783
1833
1968
1847
1748
1725
1891
1755
286
1976
1977
1655
1808
1986
1779
1861
1953
1888
1792
1811
1872
1790
1839
1985
1827
1842
1925
1735
1635
1821
1820
1973
1531
1770
59
1846
1932
1907
1730
933
1395
1753
1751
361
1530
1782
1087
1589
1929
1795
1815
1732
1765
1877
1722
526
1709
1789
1892
1913
1662
1809
1670
1947
1835
1587
1758
1982
2009
1757
670
1983
1524
1878
1796
1952
566
1922
1882
1870
1799
1731
1724
1805
2003
1596
1566
1853
1911
1857
1739
1744
1627
1729
1745
1845
1582
1884
1883
1941
1764
1685
1791
1837
1697
1742
1781
1948
1876
1989
1643
1871
1906
1726
1958
1502
1927
1946

39
day1/part2/main.d Normal file
View file

@ -0,0 +1,39 @@
import std;
void main()
{
File("input", "r").byLine.map!(to!int).array.multiply3EntriesThatSumTo(2020).writeln;
}
int multiply3EntriesThatSumTo(int[] input, int sum)
{
foreach (key1; input)
{
foreach (key2; input)
{
if (key2 == key1)
{
continue;
}
foreach (key3; input)
{
if (key3 == key1 || key3 == key2)
{
continue;
}
if (key1 + key2 + key3 == sum)
{
return key1 * key2 * key3;
}
}
}
}
return 0;
}
unittest
{
auto input = [1721, 979, 366, 299, 675, 1456];
assert(input.multiply3EntriesThatSumTo(2020) == 241_861_950);
}