10 "adventofcode2022/utils"
11 "adventofcode2022/day01"
12 "adventofcode2022/day02"
13 "adventofcode2022/day03"
14 "adventofcode2022/day04"
15 "adventofcode2022/day05"
16 "adventofcode2022/day06"
17 "adventofcode2022/day07"
18 "adventofcode2022/day08"
19 "adventofcode2022/day09"
20 "adventofcode2022/day10"
21 "adventofcode2022/day11"
26 // Usage: go run main.go <NN>
27 // assumes input is in day<NN>/input.txt
30 fmt.Printf("Running day %02d\n", d)
34 fmt.Printf("part 1: %d\n", day01.Part1(utils.Readfile(d)))
35 fmt.Printf("part 2: %d\n", day01.Part2(utils.Readfile(d)))
37 fmt.Printf("part 1: %d\n", day02.Part1(utils.Readfile(d)))
38 fmt.Printf("part 2: %d\n", day02.Part2(utils.Readfile(d)))
40 fmt.Printf("part 1: %d\n", day03.Part1(utils.Readfile(d)))
41 fmt.Printf("part 2: %d\n", day03.Part2(utils.Readfile(d)))
43 fmt.Printf("part 1: %d\n", day04.Part1(utils.Readfile(d)))
44 fmt.Printf("part 2: %d\n", day04.Part2(utils.Readfile(d)))
46 fmt.Printf("part 1: %s\n", day05.Part1(utils.Readfile(d)))
47 fmt.Printf("part 2: %s\n", day05.Part2(utils.Readfile(d)))
49 fmt.Printf("part 1: %d\n", day06.Part1(utils.Readfile(d)))
50 fmt.Printf("part 2: %d\n", day06.Part2(utils.Readfile(d)))
52 fmt.Printf("part 1: %d\n", day07.Part1(utils.Readfile(d)))
53 fmt.Printf("part 2: %d\n", day07.Part2(utils.Readfile(d)))
55 fmt.Printf("part 1: %d\n", day08.Part1(utils.Readfile(d)))
56 fmt.Printf("part 2: %d\n", day08.Part2(utils.Readfile(d)))
58 fmt.Printf("part 1: %d\n", day09.Part1(utils.Readfile(d)))
59 fmt.Printf("part 2: %d\n", day09.Part2(utils.Readfile(d)))
61 fmt.Printf("part 1: %d\n", day10.Part1(utils.Readfile(d)))
62 fmt.Printf("part 2: %s\n", day10.Part2(utils.Readfile(d)))
64 fmt.Printf("part 1: %d\n", day11.Part1(utils.Readfile(d)))
65 fmt.Printf("part 2: %d\n", day11.Part2(utils.Readfile(d)))
67 panic(fmt.Errorf("no such day: %d", d))
71 // Reads day from os.Args.
74 if len(os.Args) == 1 {
78 if os.Args[1] == "next" {
82 day := utils.MustAtoi(os.Args[1])
88 os.Mkdir(fmt.Sprintf("day%02d", n), 0755)
89 f, err := os.Create(fmt.Sprintf("day%02d/day%02d.go", n, n))
92 f.WriteString(fmt.Sprintf(`package day%02d
94 func Part1(input string) int {
98 func Part2(input string) int {
102 fmt.Printf("wrote day%02d/day%02d.go\n", n, n)
104 f, err = os.Create(fmt.Sprintf("day%02d/day%02d_test.go", n, n))
105 utils.PanicOnErr(err)
107 f.WriteString(fmt.Sprintf(`package day%02d
112 "github.com/stretchr/testify/require"
115 func TestPart1(t *testing.T) {
117 require.Equal(t, 0, r)
120 func TestPart2(t *testing.T) {
122 require.Equal(t, 0, r)
125 fmt.Printf("wrote day%02d/day%02d_test.go\n", n, n)