Day1
This commit is contained in:
commit
fca5536f60
|
@ -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")
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
1721
|
||||||
|
979
|
||||||
|
366
|
||||||
|
299
|
||||||
|
675
|
||||||
|
1456
|
|
@ -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
|
Loading…
Reference in New Issue
Block a user