Untitled
unknown
plain_text
2 years ago
2.2 kB
6
Indexable
package main import ( "bufio" "flag" "fmt" "os" "strconv" "strings" ) var input = flag.String("input", "real", "input file data") func read() *bufio.Scanner { f, err := os.Open(*input) if err != nil { panic(err) } return bufio.NewScanner(f) } func main() { flag.Parse() data := read() var time, distance []string var time2, distance2 string for data.Scan() { line := strings.Split(data.Text(), ":") switch line[0] { case "Time": time = strings.Fields(line[1]) time2 = strings.ReplaceAll(line[1], " ", "") case "Distance": distance = strings.Fields(line[1]) distance2 = strings.ReplaceAll(line[1], " ", "") } } times := make([]int, len(time)) distances := make([]int, len(distance)) for i, s := range time { times[i], _ = strconv.Atoi(s) } times2, _ := strconv.Atoi(time2) for i, s := range distance { distances[i], _ = strconv.Atoi(s) } distances2, _ := strconv.Atoi(distance2) //part1 totals(times, distances) //part2 totals([]int{times2}, []int{distances2}) } func totals(times, distances []int) { var held int var totals []int for race, t := range times { ways := 0 for i := 1; i <= t; i++ { total := t held = i remain := total - held if remain >= t { continue } covered := remain * held if covered > distances[race] { ways++ } } totals = append(totals, ways) } final := 1 for _, t := range totals { final = final * t } fmt.Println(final) }
Editor is loading...
Leave a Comment