Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ddf1f20967 |
33
cmd/05/input.txt
Normal file
33
cmd/05/input.txt
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
seeds: 79 14 55 13
|
||||||
|
|
||||||
|
seed-to-soil map:
|
||||||
|
50 98 2
|
||||||
|
52 50 48
|
||||||
|
|
||||||
|
soil-to-fertilizer map:
|
||||||
|
0 15 37
|
||||||
|
37 52 2
|
||||||
|
39 0 15
|
||||||
|
|
||||||
|
fertilizer-to-water map:
|
||||||
|
49 53 8
|
||||||
|
0 11 42
|
||||||
|
42 0 7
|
||||||
|
57 7 4
|
||||||
|
|
||||||
|
water-to-light map:
|
||||||
|
88 18 7
|
||||||
|
18 25 70
|
||||||
|
|
||||||
|
light-to-temperature map:
|
||||||
|
45 77 23
|
||||||
|
81 45 19
|
||||||
|
68 64 13
|
||||||
|
|
||||||
|
temperature-to-humidity map:
|
||||||
|
0 69 1
|
||||||
|
1 0 69
|
||||||
|
|
||||||
|
humidity-to-location map:
|
||||||
|
60 56 37
|
||||||
|
56 93 4
|
||||||
20
cmd/05/main.go
Normal file
20
cmd/05/main.go
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
utils "git.anthonygueguen.fr/g3po/aoc2023/internal"
|
||||||
|
day05 "git.anthonygueguen.fr/g3po/aoc2023/internal/05"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
content := utils.Init()
|
||||||
|
|
||||||
|
fmt.Println("Part 1")
|
||||||
|
|
||||||
|
result := day05.GetShortestLocation(content)
|
||||||
|
fmt.Printf("Result: %d\n", result)
|
||||||
|
fmt.Println("Part 2")
|
||||||
|
|
||||||
|
// fmt.Printf("Result: %d\n", result[1])
|
||||||
|
}
|
||||||
49
internal/05/05.go
Normal file
49
internal/05/05.go
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
package day05
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"math"
|
||||||
|
"regexp"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
|
utils "git.anthonygueguen.fr/g3po/aoc2023/internal"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetShortestLocation(content []string) int64 {
|
||||||
|
seeds := make(map[int64]int64)
|
||||||
|
minLocation := int64(math.MaxInt64)
|
||||||
|
re := regexp.MustCompile(`\d+`)
|
||||||
|
for _, val := range re.FindAllString(content[0], -1) {
|
||||||
|
num := utils.Must(strconv.ParseInt(val, 10, 64))
|
||||||
|
seeds[num] = num
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := 1; i < len(content); i++ {
|
||||||
|
matches := re.FindAllString(content[i], -1)
|
||||||
|
if len(matches) != 3 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
fmt.Println(seeds)
|
||||||
|
fmt.Println(matches)
|
||||||
|
var num []int64
|
||||||
|
for _, val := range matches {
|
||||||
|
num = append(num, utils.Must(strconv.ParseInt(val, 10, 64)))
|
||||||
|
}
|
||||||
|
|
||||||
|
for k, v := range seeds {
|
||||||
|
if v >= num[1] && v < num[1]+num[2] {
|
||||||
|
seeds[k] = num[0] + (v - num[1])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
for _, v := range seeds {
|
||||||
|
if v < minLocation {
|
||||||
|
minLocation = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return minLocation
|
||||||
|
}
|
||||||
|
|
||||||
|
func contentToBlock(content []string) {
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user