X-Git-Url: https://fbox.kageds.com/gitweb/adventofcode.git/blobdiff_plain/52105f4958d89d7d68630b9f2a41e08f6d5b31b1..204e0014599587a1fef60355c3ba66eeb95e97d8:/2023/go/day05/day05.go?ds=sidebyside diff --git a/2023/go/day05/day05.go b/2023/go/day05/day05.go index 902eb43..202bfaa 100644 --- a/2023/go/day05/day05.go +++ b/2023/go/day05/day05.go @@ -12,9 +12,9 @@ import ( ) type Map struct { - dest_range_start int - src_range_start int - range_len int + dest_range_start uint64 + src_range_start uint64 + range_len uint64 } type Almanac struct { @@ -28,16 +28,16 @@ type Almanac struct { } type SeedMap struct { - seed int - range_len int + seed uint64 + range_len uint64 } -func Part1(input string) int { +func Part1(input string) uint64 { seeds, almanac, _ := parseInput1(input) fmt.Println(seeds) fmt.Println(almanac) - minLoc := utils.MaxInt + minLoc := uint64(utils.MaxInt) for _, seed := range seeds { soil := lookup_dest(seed, almanac.seed2soil) fert := lookup_dest(soil, almanac.soil2fert) @@ -57,57 +57,26 @@ func Part1(input string) int { func Part2(input string) int { seedsmap, almanac, _ := parseInput2(input) - fmt.Println(seedsmap) - fmt.Println(almanac) - minLocMap := Map{dest_range_start: utils.MaxInt} - for _, x := range almanac.humid2loc { - if x.dest_range_start< minLocMap.dest_range_start { - minLocMap = x - } - } - fmt.Println(minLocMap.dest_range_start) - for i:=minLocMap.src_range_start;i= seedmap.seed && seed < seedmap.seed+seedmap.range_len { + return i + } + } } - -// minSeedMap := SeedMap{} -// minLoc := utils.MaxInt -// for _, seedmap := range seedsmap { -// for _, i := range []int{seedmap.seed, seedmap.seed+seedmap.range_len} { -// soil := lookup_dest(i, almanac.seed2soil) -// fert := lookup_dest(soil, almanac.soil2fert) -// water := lookup_dest(fert, almanac.fert2water) -// light := lookup_dest(water, almanac.water2light) -// temp := lookup_dest(light, almanac.light2temp) -// humid := lookup_dest(temp, almanac.temp2humid) -// loc := lookup_dest(humid, almanac.humid2loc) -// if loc < minLoc { -// minSeedMap = seedmap -// minLoc = loc -// } -// } -// } -// -// fmt.Println(minSeedMap) -// minLoc = utils.MaxInt -// for i:=minSeedMap.seed;i= dataMap.src_range_start && entity <= dataMap.src_range_start + dataMap.range_len { return dataMap.dest_range_start + entity - dataMap.src_range_start @@ -116,7 +85,7 @@ func lookup_dest(entity int, data []Map) int { return entity } -func lookup_src(entity int, data []Map) int { +func lookup_src(entity uint64, data []Map) uint64 { for _, dataMap := range data { if entity >= dataMap.dest_range_start && entity <= dataMap.dest_range_start + dataMap.range_len { return dataMap.src_range_start + entity - dataMap.dest_range_start @@ -125,16 +94,16 @@ func lookup_src(entity int, data []Map) int { return entity } -func parseInput1(input string) ([]int, Almanac, error) { +func parseInput1(input string) ([]uint64, Almanac, error) { var almanac Almanac - var seeds []int + var seeds []uint64 lines := strings.Split(input, "\n") seedLine := string(lines[0]) tokens := strings.Fields(seedLine) for _, token := range tokens[1:] { - seeds = append(seeds, utils.MustAtoi(token)) + seeds = append(seeds, uint64(utils.MustAtoi(token))) } blocks := strings.Split(input, "\n\n") @@ -171,8 +140,8 @@ func parseInput2(input string) ([]SeedMap, Almanac, error) { seedLine := string(lines[0]) tokens := strings.Fields(seedLine) for i:=1;i