]> fbox.kageds.com Git - adventofcode.git/blob - 2023/gareth/day06/day06.go
day07
[adventofcode.git] / 2023 / gareth / day06 / day06.go
1 package day06
2
3 type Race struct {
4 Time int
5 Distance int
6 }
7
8 func Part1(input string) int {
9 var Races []Race
10 Races = append(Races, Race{56, 546})
11 Races = append(Races, Race{97, 1927})
12 Races = append(Races, Race{78, 1131})
13 Races = append(Races, Race{75, 1139})
14
15 total := 1
16 for _, r := range Races {
17 halfTime := r.Time / 2
18 for i := 0; i <= halfTime; i++ {
19 raceDis := i * (r.Time - i)
20 if raceDis > r.Distance {
21 total = total * (r.Time - (i * 2) + 1)
22 break
23 }
24 }
25 }
26 return total
27 }
28
29 func Part2(input string) int {
30 r := Race{56977875, 546192711311139}
31 halfTime := r.Time / 2
32 for i := 0; i <= halfTime; i++ {
33 raceDis := i * (r.Time - i)
34 if raceDis > r.Distance {
35 return r.Time - (i * 2) + 1
36
37 }
38 }
39 return -1
40 }