/* Day #DAY#: #TITLE# */ package main import ( "AoC2021/utils/args" "AoC2021/utils/log" "AoC2021/utils/timer" "bufio" "fmt" "os" ) func check(e error) { if e != nil { log.Println(log.DEBUG, "Oh snap!") panic(e) } } func main() { argMap := args.Parse(os.Args) log.SetLogLevelFromArgs(argMap) selectedPart, partSpecified := argMap["part"] log.Println(log.NORMAL, "--- Day #DAY#: #TITLE# ---") timer.Start() if !partSpecified || selectedPart == "" || selectedPart == "1" { part1() timer.Tick() log.Println(log.NORMAL) } if !partSpecified || selectedPart == "" || selectedPart == "2" { part2() timer.Tick() log.Println(log.NORMAL) } } func part1() { log.Println(log.NORMAL, "* Part 1 *") log.Println(log.NORMAL, " Goal: ") log.Println(log.NORMAL, " Answer: ") input, err := os.Open("./input.txt") check(err) defer input.Close() scanner := bufio.NewScanner(input) lines := 0 answer := 42 for scanner.Scan() { _ = scanner.Text() lines++ } log.Printf(log.NORMAL, "Read %d lines from input\n", lines) log.Printf(log.NORMAL, "The solution is %d\n", answer) } func part2() { log.Println(log.NORMAL, "* Part 2 *") log.Println(log.NORMAL, " Goal: ") log.Println(log.NORMAL, " Answer: ") }