mirror of
https://github.com/Threnklyn/advent-of-code-go.git
synced 2026-05-18 19:13:27 +02:00
2020 day1 - two/three sum
This commit is contained in:
Executable
+200
@@ -0,0 +1,200 @@
|
||||
1593
|
||||
1575
|
||||
1583
|
||||
1609
|
||||
1835
|
||||
2008
|
||||
1638
|
||||
1396
|
||||
1833
|
||||
1524
|
||||
1778
|
||||
1574
|
||||
1653
|
||||
1962
|
||||
1831
|
||||
1557
|
||||
1847
|
||||
1587
|
||||
1876
|
||||
1914
|
||||
1565
|
||||
1585
|
||||
1713
|
||||
35
|
||||
1862
|
||||
1885
|
||||
1735
|
||||
1497
|
||||
1989
|
||||
1871
|
||||
1923
|
||||
1917
|
||||
1719
|
||||
1797
|
||||
1222
|
||||
1493
|
||||
1939
|
||||
1139
|
||||
1260
|
||||
1622
|
||||
1625
|
||||
1683
|
||||
1742
|
||||
1996
|
||||
1579
|
||||
1703
|
||||
1692
|
||||
1920
|
||||
1536
|
||||
1965
|
||||
1936
|
||||
1947
|
||||
1800
|
||||
1556
|
||||
1633
|
||||
1530
|
||||
1612
|
||||
1764
|
||||
1810
|
||||
1845
|
||||
1750
|
||||
1854
|
||||
1973
|
||||
1512
|
||||
1856
|
||||
1568
|
||||
1634
|
||||
1630
|
||||
1602
|
||||
1555
|
||||
1681
|
||||
1844
|
||||
1544
|
||||
1909
|
||||
1690
|
||||
1851
|
||||
1785
|
||||
863
|
||||
1866
|
||||
1988
|
||||
1715
|
||||
1881
|
||||
1570
|
||||
1380
|
||||
1956
|
||||
777
|
||||
1693
|
||||
1717
|
||||
1724
|
||||
1975
|
||||
790
|
||||
1484
|
||||
1822
|
||||
1922
|
||||
1963
|
||||
1741
|
||||
1809
|
||||
1896
|
||||
1837
|
||||
1980
|
||||
1244
|
||||
1832
|
||||
1834
|
||||
1643
|
||||
1775
|
||||
1818
|
||||
1503
|
||||
1802
|
||||
1957
|
||||
1174
|
||||
1826
|
||||
1649
|
||||
1941
|
||||
1571
|
||||
1930
|
||||
1629
|
||||
1502
|
||||
2002
|
||||
1700
|
||||
1880
|
||||
1723
|
||||
1803
|
||||
2007
|
||||
1543
|
||||
1872
|
||||
1993
|
||||
1740
|
||||
1919
|
||||
1688
|
||||
1067
|
||||
1680
|
||||
1580
|
||||
1558
|
||||
1772
|
||||
1694
|
||||
1480
|
||||
1257
|
||||
1796
|
||||
2001
|
||||
537
|
||||
1701
|
||||
1613
|
||||
1784
|
||||
1559
|
||||
1482
|
||||
1968
|
||||
1604
|
||||
983
|
||||
1842
|
||||
1817
|
||||
1850
|
||||
1788
|
||||
1982
|
||||
1535
|
||||
1615
|
||||
453
|
||||
1895
|
||||
1443
|
||||
1308
|
||||
1533
|
||||
1714
|
||||
1765
|
||||
1037
|
||||
1992
|
||||
1843
|
||||
1883
|
||||
1981
|
||||
1525
|
||||
1038
|
||||
1540
|
||||
1766
|
||||
1886
|
||||
1546
|
||||
1716
|
||||
810
|
||||
1899
|
||||
1708
|
||||
1508
|
||||
1870
|
||||
1051
|
||||
1867
|
||||
1840
|
||||
1617
|
||||
1726
|
||||
1566
|
||||
1616
|
||||
1948
|
||||
1771
|
||||
1627
|
||||
1994
|
||||
1486
|
||||
1913
|
||||
1600
|
||||
1983
|
||||
1501
|
||||
2003
|
||||
1667
|
||||
1620
|
||||
1943
|
||||
1674
|
||||
+38
-2
@@ -3,6 +3,7 @@ package main
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/alexchao26/advent-of-code-go/util"
|
||||
)
|
||||
@@ -23,9 +24,44 @@ func main() {
|
||||
}
|
||||
|
||||
func part1(input string) int {
|
||||
return 0
|
||||
parsed := parseInputs(input)
|
||||
|
||||
seen := map[int]bool{}
|
||||
|
||||
for _, n := range parsed {
|
||||
if seen[n] {
|
||||
return n * (2020 - n)
|
||||
}
|
||||
seen[2020-n] = true
|
||||
}
|
||||
|
||||
return -1 // should not be hit
|
||||
}
|
||||
|
||||
func part2(input string) int {
|
||||
return 0
|
||||
parsed := parseInputs(input)
|
||||
|
||||
// O(n^3) is fast enough
|
||||
for i := 0; i < len(parsed); i++ {
|
||||
for j := i + 1; j < len(parsed); j++ {
|
||||
for k := j + 1; k < len(parsed); k++ {
|
||||
if parsed[i]+parsed[j]+parsed[k] == 2020 {
|
||||
return parsed[i] * parsed[j] * parsed[k]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return -1 // should not be hit
|
||||
}
|
||||
|
||||
func parseInputs(input string) []int {
|
||||
split := strings.Split(input, "\n")
|
||||
|
||||
nums := []int{}
|
||||
for _, n := range split {
|
||||
nums = append(nums, util.StrToInt(n))
|
||||
}
|
||||
|
||||
return nums
|
||||
}
|
||||
|
||||
+19
-3
@@ -1,6 +1,10 @@
|
||||
package main
|
||||
|
||||
import "testing"
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/alexchao26/advent-of-code-go/util"
|
||||
)
|
||||
|
||||
var tests1 = []struct {
|
||||
name string
|
||||
@@ -8,7 +12,13 @@ var tests1 = []struct {
|
||||
input string
|
||||
// add extra args if needed
|
||||
}{
|
||||
// {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")},
|
||||
{"example", 514579, `1721
|
||||
979
|
||||
366
|
||||
299
|
||||
675
|
||||
1456`},
|
||||
{"actual", 1019371, util.ReadFile("input.txt")},
|
||||
}
|
||||
|
||||
func TestPart1(t *testing.T) {
|
||||
@@ -28,7 +38,13 @@ var tests2 = []struct {
|
||||
input string
|
||||
// add extra args if needed
|
||||
}{
|
||||
// {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")},
|
||||
{"example", 241861950, `1721
|
||||
979
|
||||
366
|
||||
299
|
||||
675
|
||||
1456`},
|
||||
{"actual", 278064990, util.ReadFile("input.txt")},
|
||||
}
|
||||
|
||||
func TestPart2(t *testing.T) {
|
||||
|
||||
Executable
Reference in New Issue
Block a user