day6, part2
This commit is contained in:
parent
06b555d7f9
commit
85c2000591
|
@ -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)
|
||||
|
||||
|
|
Loading…
Reference in New Issue