diff --git a/dayXX/example.txt b/dayXX/example.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/dayXX/example.txt @@ -0,0 +1 @@ + diff --git a/dayXX/input.txt b/dayXX/input.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/dayXX/input.txt @@ -0,0 +1 @@ + diff --git a/dayXX/parse.go b/dayXX/parse.go new file mode 100644 index 0000000..465a667 --- /dev/null +++ b/dayXX/parse.go @@ -0,0 +1,14 @@ +package dayXX + +import ( + "git.elis.nu/etu/aoc2020/utils" +) + +var rows []string + +func ParseFile(input string) { + // Parse file + for _, line := range utils.GetLinesFromFile("dayXX/" + input + ".txt") { + rows = append(rows, line) + } +} diff --git a/dayXX/solve1.go b/dayXX/solve1.go new file mode 100644 index 0000000..1eb9da1 --- /dev/null +++ b/dayXX/solve1.go @@ -0,0 +1,12 @@ +package dayXX + +import ( + "fmt" + "log" +) + +func Solve1() { + fmt.Println(rows) + + log.Printf("2020-12-XX.01: Answer: %d\n", len(rows)) +} diff --git a/dayXX/solve2.go b/dayXX/solve2.go new file mode 100644 index 0000000..c7a1502 --- /dev/null +++ b/dayXX/solve2.go @@ -0,0 +1,12 @@ +package dayXX + +import ( + "fmt" + "log" +) + +func Solve2() { + fmt.Println(len(rows)) + + log.Printf("2020-12-XX.02: Answer: %d\n", len(rows)) +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..51700dd --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module git.elis.nu/etu/aoc2020 + +go 1.15 diff --git a/main.go b/main.go new file mode 100644 index 0000000..2e36fa1 --- /dev/null +++ b/main.go @@ -0,0 +1,15 @@ +package main // import "git.elis.nu/etu/aoc2020" + +import ( + "log" + "os" +) + +func main() { + if len(os.Args) != 3 { + log.Fatal("Usage: Missing arguments: [dayXX] [input].txt") + } + + switch os.Args[1] { + } +} diff --git a/utils/perf.go b/utils/perf.go new file mode 100644 index 0000000..f4df4c2 --- /dev/null +++ b/utils/perf.go @@ -0,0 +1,28 @@ +package utils + +import ( + "log" + "os" + "time" +) + +func Perf(date string, parse func(string), solve1 func(), solve2 func()) { + // Store time to print out execution time + start := time.Now() + + log.Printf("%s: Starting program to solve %s\n", date, date) + + parse(os.Args[2]) + + log.Printf("%s: Spent %s on parsing input\n", date, time.Since(start)) + start = time.Now() + + solve1() + + log.Printf("%s.01: Spent %s on solving part 1\n", date, time.Since(start)) + start = time.Now() + + solve2() + + log.Printf("%s.02: Spent %s on solving part 2\n", date, time.Since(start)) +} diff --git a/utils/readfile.go b/utils/readfile.go new file mode 100644 index 0000000..6b34da0 --- /dev/null +++ b/utils/readfile.go @@ -0,0 +1,32 @@ +package utils + +import ( + "bufio" + "log" + "os" +) + +func GetLinesFromFile(name string) []string { + var rows []string + + // Get file handler + fh, err := os.Open(name) + defer fh.Close() + + if err != nil { + log.Fatal("Failed to open file:", err) + } + + // Parse file + scanner := bufio.NewScanner(fh) + for scanner.Scan() { + rows = append(rows, scanner.Text()) + } + + // Print eventual error from parsing the file + if err := scanner.Err(); err != nil { + log.Fatal(err) + } + + return rows +}