1
0
aoc-2024/main.go
2024-12-05 22:51:31 +02:00

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")
}
}