<- readr::read_delim(
seeds "input.txt",
delim = " ",
skip = 0,
n_max = 1,
col_names = FALSE
)<- tribble(
ref_list ~name, ~first_row, ~last_row,
"seed2soil", 3, 43,
"soil2fert", 45, 70,
"fert2water", 72, 114,
"water2light", 116, 163,
"light2temp", 165, 181,
"temp2humidity", 183, 199,
"humidity2loc", 201, 213
)<- map(
xwalk_list 1:nrow(ref_list),
%$%
\(this_row) ref_list[this_row,] ::read_delim(
readr"input.txt",
delim = " ",
skip = first_row,
n_max = last_row - first_row,
col_names = FALSE
%>%
) setNames(c("dest", "src", "len")) %>%
transmute(
src,src_max = src + len - 1,
dest,dest_max = dest + len - 1
)%>%
) setNames(ref_list$name)
Day 5 ⋆
Puzzle
Solution
Preprocessing
Part One
<- function (prev_df, xwalk) {
helper1_day5 <- xwalk %>%
tmp1 filter(src <= prev_df$this_dest & prev_df$this_dest <= src_max)
if (nrow(tmp1) > 0) {
<- tmp1 %>%
to_return mutate(this_dest = dest + (prev_df$this_dest - src))
else if (nrow(tmp1) == 0) {
} <- tibble(this_dest = prev_df$this_dest)
to_return
}return(to_return)
}<- function (input, xwalk_list) {
helper2_day5 tibble(this_dest = input) %>%
helper1_day5(xwalk_list$seed2soil) %>%
helper1_day5(xwalk_list$soil2fert) %>%
helper1_day5(xwalk_list$fert2water) %>%
helper1_day5(xwalk_list$water2light) %>%
helper1_day5(xwalk_list$light2temp) %>%
helper1_day5(xwalk_list$temp2humidity) %>%
helper1_day5(xwalk_list$humidity2loc) %>%
pull(this_dest)
}<- seeds %>%
answer1 select(-X1) %>%
unlist() %>%
unname() %>%
map_dbl(~helper2_day5(.x, xwalk_list = xwalk_list)) %>%
min()
answer1
[1] 462648396
Part Two
I haven’t solved this part yet!