67 lines
1.2 KiB
Go
67 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"strings"
|
|
)
|
|
|
|
func showUsage() {
|
|
print(len(os.Args))
|
|
fmt.Printf("Usage: %s <day> <part> [input.txt]\n", os.Args[0])
|
|
}
|
|
|
|
type DayPartSolver func([]string) error
|
|
type DaySolver struct {
|
|
day1 DayPartSolver
|
|
day2 DayPartSolver
|
|
}
|
|
|
|
func main() {
|
|
if (len(os.Args) < 3) {
|
|
showUsage()
|
|
return
|
|
}
|
|
|
|
day := os.Args[1]
|
|
part := os.Args[2]
|
|
|
|
var input_filename string
|
|
if len(os.Args) <= 3 {
|
|
input_filename = "input.txt"
|
|
} else {
|
|
input_filename = os.Args[3]
|
|
}
|
|
|
|
contents, err := os.ReadFile(input_filename)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
lines := strings.Split(strings.TrimRight(string(contents), "\n"), "\n")
|
|
|
|
solvers := make(map[string]DaySolver)
|
|
solvers["1"] = DaySolver{ day1: Day1Part1, day2: Day1Part2 }
|
|
solvers["2"] = DaySolver{ day1: Day2Part1, day2: Day2Part2 }
|
|
solvers["3"] = DaySolver{ day1: Day3Part1, day2: Day3Part2 }
|
|
solvers["4"] = DaySolver{ day1: Day4Part1, day2: Day4Part2 }
|
|
|
|
solver, ok := solvers[day]
|
|
|
|
if ok {
|
|
var err error
|
|
if part == "1" {
|
|
err = solver.day1(lines)
|
|
} else if part == "2" {
|
|
err = solver.day1(lines)
|
|
}
|
|
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
} else {
|
|
log.Fatal("Day not found")
|
|
}
|
|
}
|