From 9e034e4eae648042adee49cd1a3d79debfa6646e Mon Sep 17 00:00:00 2001 From: Elis Hirwing Date: Tue, 1 Dec 2020 05:55:37 +0100 Subject: [PATCH] [2020-12-01] Add solutions for day01 --- Makefile | 2 + day01/example.txt | 6 ++ day01/input.txt | 200 ++++++++++++++++++++++++++++++++++++++++++++++ day01/parse.go | 28 +++++++ day01/solve1.go | 18 +++++ day01/solve2.go | 20 +++++ main.go | 5 ++ 7 files changed, 279 insertions(+) create mode 100644 day01/example.txt create mode 100644 day01/input.txt create mode 100644 day01/parse.go create mode 100644 day01/solve1.go create mode 100644 day01/solve2.go diff --git a/Makefile b/Makefile index 9f91677..833c14d 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,8 @@ all: day01 day02 day03 day04 day05 day06 day07 day08 day09 day10 day11 day12 day13 day14 day15 day16 day17 day18 day19 day20 day21 day22 day23 day24 day25 day01: + go run main.go day01 input + day02: day03: day04: diff --git a/day01/example.txt b/day01/example.txt new file mode 100644 index 0000000..e3fb011 --- /dev/null +++ b/day01/example.txt @@ -0,0 +1,6 @@ +1721 +979 +366 +299 +675 +1456 diff --git a/day01/input.txt b/day01/input.txt new file mode 100644 index 0000000..fa2560c --- /dev/null +++ b/day01/input.txt @@ -0,0 +1,200 @@ +1567 +1223 +1758 +1842 +1933 +1898 +1409 +1058 +1533 +1417 +1032 +1634 +1477 +1394 +1888 +1972 +1237 +1390 +1677 +1546 +1302 +1070 +1369 +1455 +1065 +1924 +1593 +1131 +1064 +1346 +1914 +1129 +1830 +1450 +1278 +1740 +1809 +1176 +1734 +1102 +1807 +1982 +1603 +1736 +2008 +1980 +1905 +1633 +1732 +1350 +1865 +1988 +1805 +1998 +1152 +1046 +1870 +1557 +1789 +1766 +1945 +1359 +1002 +1126 +1719 +1497 +1296 +1560 +1936 +1929 +1464 +2005 +1281 +618 +1257 +1107 +1632 +1688 +1964 +1803 +1360 +1384 +1889 +1411 +1328 +1452 +1868 +1515 +1586 +1631 +1618 +1087 +1710 +1094 +1774 +1295 +1700 +1636 +1230 +1421 +1910 +1522 +1366 +1144 +1757 +1493 +1316 +1103 +687 +1371 +1720 +1155 +1559 +1900 +989 +1367 +1999 +1066 +1773 +1787 +1402 +1047 +1806 +1956 +1219 +1555 +1307 +1419 +1706 +1884 +1109 +1181 +2010 +1298 +1730 +1078 +1848 +1398 +1687 +2007 +1550 +1664 +1225 +1079 +1698 +350 +1222 +1377 +1977 +1510 +1571 +1630 +1029 +1379 +1942 +1949 +1249 +1829 +1297 +1530 +1607 +1324 +1069 +1476 +928 +1039 +1855 +1644 +1454 +1310 +1172 +547 +1034 +1878 +1479 +1457 +1319 +1810 +1759 +1439 +1851 +545 +1470 +2003 +1908 +1564 +1491 +1174 +1301 +1689 +1276 +1781 +1392 +1499 +1962 +1653 +1823 +1381 +1827 +1974 diff --git a/day01/parse.go b/day01/parse.go new file mode 100644 index 0000000..665f199 --- /dev/null +++ b/day01/parse.go @@ -0,0 +1,28 @@ +package day01 + +import ( + "log" + "sort" + "strconv" + + "git.elis.nu/etu/aoc2020/utils" +) + +var rows []int + +func ParseFile(input string) { + // Parse file + for _, line := range utils.GetLinesFromFile("day01/" + input + ".txt") { + row, err := strconv.Atoi(line) + + if err != nil { + log.Println("Failed to parse int, skipping:", err) + continue + } + + rows = append(rows, row) + } + + // To reach the end state in a more consistent manner, sort the input + sort.Ints(rows) +} diff --git a/day01/solve1.go b/day01/solve1.go new file mode 100644 index 0000000..c50828d --- /dev/null +++ b/day01/solve1.go @@ -0,0 +1,18 @@ +package day01 + +import "log" + +func Solve1() { + for _, row1 := range rows { + for _, row2 := range rows { + if row1+row2 == 2020 { + log.Printf( + "2020-12-01.01: Answer: %d\n", + row1*row2, + ) + + return + } + } + } +} diff --git a/day01/solve2.go b/day01/solve2.go new file mode 100644 index 0000000..1348dfc --- /dev/null +++ b/day01/solve2.go @@ -0,0 +1,20 @@ +package day01 + +import "log" + +func Solve2() { + for _, row1 := range rows { + for _, row2 := range rows { + for _, row3 := range rows { + if row1+row2+row3 == 2020 { + log.Printf( + "2020-12-01.02: Answer: %d\n", + row1*row2*row3, + ) + + return + } + } + } + } +} diff --git a/main.go b/main.go index 2e36fa1..d9adb38 100644 --- a/main.go +++ b/main.go @@ -3,6 +3,9 @@ package main // import "git.elis.nu/etu/aoc2020" import ( "log" "os" + + "git.elis.nu/etu/aoc2020/day01" + "git.elis.nu/etu/aoc2020/utils" ) func main() { @@ -11,5 +14,7 @@ func main() { } switch os.Args[1] { + case "day01": + utils.Perf("2020-12-01", day01.ParseFile, day01.Solve1, day01.Solve2) } }