Werner Altewischer
12/05/2023, 6:46 PMNikita Merinov
12/05/2023, 7:28 PMWerner Altewischer
12/05/2023, 7:31 PMWerner Altewischer
12/05/2023, 7:34 PM// We can start with the best estimate based on the boundaries of the ranges
var part2 = seedRanges.minOf { range -> min(almanac.process(range.first), almanac.process(range.last)) }
Werner Altewischer
12/05/2023, 7:35 PMNikita Merinov
12/05/2023, 8:02 PMseeds: 2 10
seed-to-soil map:
20 2 1
Program will print answer 2 for the second part. Though for the given seed range 2..11 and mapping 2..2->20..20, it should process input range to two ranges: 20..20 and 3..11, so the minimal start would be 3.Werner Altewischer
12/05/2023, 8:16 PMWerner Altewischer
12/05/2023, 8:19 PMWerner Altewischer
12/05/2023, 8:27 PMpart2 = binarySearch(lowerBound = 0, upperBound = part2 - 1, inverted = findMin) { value ->
// Valid if any of the ranges contains the value
seedRanges.any { range ->
val seedValue = inverseAlmanac.process(value)
range.contains(seedValue) && almanac.process(seedValue) == value
}
} ?: break
Werner Altewischer
12/05/2023, 8:27 PMNikita Merinov
12/05/2023, 8:35 PMWerner Altewischer
12/05/2023, 8:36 PMWerner Altewischer
12/05/2023, 8:36 PMWerner Altewischer
12/05/2023, 8:36 PMNikita Merinov
12/05/2023, 8:37 PMWerner Altewischer
12/05/2023, 8:41 PMWerner Altewischer
12/05/2023, 8:45 PMpart2 = 0L
while (true) {
val valid = seedRanges.any { range ->
val seed = inverseAlmanac.process(part2)
range.contains(seed) && almanac.process(seed) == part2
}
if (valid) break
part2++
}
Werner Altewischer
12/05/2023, 8:45 PMWerner Altewischer
12/05/2023, 8:53 PMNikita Merinov
12/05/2023, 9:39 PMseeds: 1 10
seed-to-soil map:
20 1 5
30 7 4
This will give answer 20 for the part 2, though the correct one should be 6. I've checked with the latest version from your repo.Nikita Merinov
12/05/2023, 9:42 PMGmvalentino8
12/06/2023, 5:39 AMWerner Altewischer
12/06/2023, 5:39 AMGmvalentino8
12/06/2023, 5:40 AMGmvalentino8
12/06/2023, 5:42 AMBegin: 0 End: 19 Result: null
Begin: 10 End: 19 Result: null
Begin: 15 End: 19 Result: null
Begin: 18 End: 19 Result: null
Begin: 19 End: 19 Result: null
Werner Altewischer
12/06/2023, 5:42 AMWerner Altewischer
12/06/2023, 5:44 AMGmvalentino8
12/06/2023, 5:44 AMGmvalentino8
12/06/2023, 5:45 AMWerner Altewischer
12/06/2023, 5:46 AMWerner Altewischer
12/06/2023, 6:35 AM