day6, part2

This commit is contained in:
efim 2023-12-06 12:59:20 +00:00
parent 06b555d7f9
commit 85c2000591
1 changed files with 33 additions and 7 deletions

View File

@ -3,19 +3,17 @@ package day6
import (
"fmt"
"log"
"math"
"os"
"strconv"
"strings"
)
func Run() int {
input := ReadInput("day6/input")
result := 1
for _, race := range input {
result *= race.countWinningMoves()
}
log.Printf("input %+v\n", input)
return result
race := ReadInput2("day6/input")
log.Printf("input %+v\n", race)
return race.countWinningMoves()
}
type Race struct {
@ -45,6 +43,34 @@ func (r Race) countWinningMoves() int {
return result
}
func ReadInput2(filename string) Race {
runningTime := 0
runningDistance := 0
bytes, err := os.ReadFile(filename)
if err != nil {
panic(fmt.Sprintln("problem readin input : ", filename))
}
text := strings.Split( string(bytes), "\n")
times := strings.Fields(text[0])
distances := strings.Fields(text[1])
for i := 1; i < len(times); i++ {
timeStr := times[i]
distanceStr := distances[i]
time, err1 := strconv.Atoi(timeStr)
distance, err2 := strconv.Atoi(distanceStr)
if err1 != nil || err2 != nil {
panic(fmt.Sprintf("error reading race %d from %s %s\n", i, times[i], distances[i]))
}
runningTime = runningTime * int(math.Pow10(len(timeStr))) + time
runningDistance = runningDistance * int(math.Pow10(len(distanceStr))) + distance
}
return Race{ runningTime, runningDistance }
}
func ReadInput(filename string) []Race {
result := make([]Race, 0)