41 lines
748 B
Go
41 lines
748 B
Go
package day06
|
|
|
|
type Race struct {
|
|
Time int
|
|
Distance int
|
|
}
|
|
|
|
func Part1(input string) int {
|
|
var Races []Race
|
|
Races = append(Races, Race{56, 546})
|
|
Races = append(Races, Race{97, 1927})
|
|
Races = append(Races, Race{78, 1131})
|
|
Races = append(Races, Race{75, 1139})
|
|
|
|
total := 1
|
|
for _, r := range Races {
|
|
halfTime := r.Time / 2
|
|
for i := 0; i <= halfTime; i++ {
|
|
raceDis := i * (r.Time - i)
|
|
if raceDis > r.Distance {
|
|
total = total * (r.Time - (i * 2) + 1)
|
|
break
|
|
}
|
|
}
|
|
}
|
|
return total
|
|
}
|
|
|
|
func Part2(input string) int {
|
|
r := Race{56977875, 546192711311139}
|
|
halfTime := r.Time / 2
|
|
for i := 0; i <= halfTime; i++ {
|
|
raceDis := i * (r.Time - i)
|
|
if raceDis > r.Distance {
|
|
return r.Time - (i * 2) + 1
|
|
|
|
}
|
|
}
|
|
return -1
|
|
}
|