package main import ( "fmt" "internal/day04" "internal/util" ) func main() { data := util.ReadInput() shifts := day04.ParseInput(data) guards := day04.BuildGuards(shifts) sleepiest, sleepiestMinute := FindSleepiestData(guards) fmt.Printf("Sleepiest Guard: %d\n", sleepiest.ID) fmt.Printf("Sleepiest Minute: %d\n", sleepiestMinute) fmt.Printf("Result: %d\n", sleepiest.ID*sleepiestMinute) } func FindSleepiestData(data map[int]*day04.Guard) (*day04.Guard, int) { var sleepiest *day04.Guard for _, guard := range data { if sleepiest == nil { sleepiest = guard continue } if guard.SleepTotal > sleepiest.SleepTotal { sleepiest = guard } } sleepiestMinute := -1 sleepiestCount := 0 for minute, sleepiness := range sleepiest.Sleep { if sleepiness > sleepiestCount { sleepiestCount = sleepiness sleepiestMinute = minute } } return sleepiest, sleepiestMinute }