From fca5536f60962202c5917528ed0441afd3d87297 Mon Sep 17 00:00:00 2001 From: Karl Spickermann Date: Tue, 1 Dec 2020 17:08:12 +0100 Subject: [PATCH] Day1 --- day1/day1.go | 61 ++++++++++++++ day1/day1Test.txt | 6 ++ day1/day1input.txt | 200 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 267 insertions(+) create mode 100644 day1/day1.go create mode 100644 day1/day1Test.txt create mode 100644 day1/day1input.txt diff --git a/day1/day1.go b/day1/day1.go new file mode 100644 index 0000000..e1244b2 --- /dev/null +++ b/day1/day1.go @@ -0,0 +1,61 @@ +package main + +import ( + "AoC2020/helper" + "errors" + "fmt" + "os" + "sort" +) + +func main() { + args := os.Args[1:] + input, err := helper.GetInput(args[0]) + if err != nil { + fmt.Println(err) + } + fmt.Println(day1(input)) + fmt.Println(day1_part2(input)) + +} + +func day1(numbers []int) int { + goal := 2020 + sort.Ints(numbers) + p1 := 0 + p2 := len(numbers) - 1 + for { + if numbers[p1]+numbers[p2] < goal { + p1++ + } + if numbers[p1]+numbers[p2] > goal { + p2-- + } + if numbers[p1]+numbers[p2] == goal { + return numbers[p1] * numbers[p2] + } + } +} + +func day1_part2(numbers []int) (int, error) { + goal := 2020 + sort.Ints(numbers) + + for i, number := range numbers { + p1 := i + 1 + p2 := len(numbers) - 1 - i + + for p1 < p2 { + if numbers[p1]+numbers[p2]+number < goal { + p1++ + } + if numbers[p1]+numbers[p2]+number > goal { + p2-- + } + if numbers[p1]+numbers[p2]+number == goal { + return numbers[p1] * numbers[p2] * number, nil + } + } + } + return 0, errors.New("No Triplet Found") +} diff --git a/day1/day1Test.txt b/day1/day1Test.txt new file mode 100644 index 0000000..0bb977d --- /dev/null +++ b/day1/day1Test.txt @@ -0,0 +1,6 @@ +1721 +979 +366 +299 +675 +1456 \ No newline at end of file diff --git a/day1/day1input.txt b/day1/day1input.txt new file mode 100644 index 0000000..c13d4c4 --- /dev/null +++ b/day1/day1input.txt @@ -0,0 +1,200 @@ +1728 +1621 +1856 +1683 +1940 +1097 +1711 +1906 +2008 +1608 +2003 +1990 +1864 +1035 +1981 +1978 +1955 +1907 +1198 +1087 +1835 +1961 +1941 +1903 +1675 +417 +1842 +1802 +1639 +1601 +1546 +1909 +1061 +1031 +1996 +1717 +1972 +1900 +1443 +1873 +1851 +2010 +1650 +1975 +1002 +1142 +1747 +1640 +1924 +1824 +1539 +1937 +1715 +1871 +1867 +1428 +1861 +1914 +1986 +1976 +1111 +1858 +1869 +1899 +1171 +1041 +1662 +1222 +1709 +1889 +1950 +1960 +1989 +1737 +1600 +1444 +1725 +1710 +1653 +1745 +1922 +1945 +1189 +1917 +1891 +1718 +1997 +1631 +1053 +1750 +1634 +1822 +1706 +1160 +1619 +1665 +1687 +1648 +1818 +1655 +1736 +1881 +489 +1598 +1923 +1962 +1918 +1689 +1616 +1825 +1723 +1767 +591 +1734 +1949 +1645 +1344 +1959 +1758 +1068 +1843 +1826 +1849 +2005 +1777 +144 +2009 +1982 +1911 +1288 +1595 +1094 +2000 +1713 +1973 +1971 +1916 +1666 +1105 +1806 +1868 +1944 +1654 +1809 +1726 +1672 +1060 +1065 +1521 +1921 +1966 +1113 +1149 +1607 +1980 +1023 +1855 +1948 +1638 +1930 +1866 +1954 +1697 +1884 +1832 +2004 +914 +1845 +1043 +1854 +1223 +1913 +1984 +1910 +1793 +1878 +1248 +617 +1927 +1527 +1819 +1350 +1807 +1722 +1016 +1700 +111 +1629 +1932 +1644 +1454 +1987 +1925 +1953 +1743 +1180 +1782 +1523 +1245 +1620