-
Notifications
You must be signed in to change notification settings - Fork 0
/
advent.go
75 lines (70 loc) · 1.8 KB
/
advent.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package main
import (
advent "advent-of-code-2020/cmd"
"fmt"
"os"
"strconv"
"strings"
"time"
)
// Run the advent of code challenges for 2020.
// A specific day or range of days can be run using command-line arguments
// go run advent.go 2 : runs just day 2
// go run advent.go 1 3 : runs just days 1-3
func main() {
var days []func()
var err error
days = append(days, advent.Day1)
days = append(days, advent.Day2)
days = append(days, advent.Day3)
days = append(days, advent.Day4)
days = append(days, advent.Day5)
days = append(days, advent.Day6)
days = append(days, advent.Day7)
days = append(days, advent.Day8)
days = append(days, advent.Day9)
days = append(days, advent.Day10)
days = append(days, advent.Day11)
days = append(days, advent.Day12)
days = append(days, advent.Day13)
days = append(days, advent.Day14)
days = append(days, advent.Day15)
days = append(days, advent.Day16)
days = append(days, advent.Day17)
days = append(days, advent.Day18)
days = append(days, advent.Day19)
days = append(days, advent.Day21)
days = append(days, advent.Day22)
days = append(days, advent.Day23)
days = append(days, advent.Day24)
lineBreak := strings.Repeat("=", 30)
start := 1
end := len(days)
if len(os.Args) == 2 {
start, err = strconv.Atoi(os.Args[1])
if err != nil {
fmt.Println(err)
}
end = start
} else if len(os.Args) == 3 {
start, err = strconv.Atoi(os.Args[1])
if err != nil {
fmt.Println(err)
}
end, err = strconv.Atoi(os.Args[2])
if err != nil {
fmt.Println(err)
}
}
for ii, function := range days[start-1 : end] {
fmt.Println(lineBreak)
fmt.Println("Day", ii+start)
fmt.Println(lineBreak)
startTime := time.Now()
function()
duration := time.Since(startTime)
fmt.Println(lineBreak)
fmt.Println("Evaluation time: ", duration)
}
fmt.Println(lineBreak)
}