valid_input <- input |>
str_extract_all(pattern = "mul\\(\\d+,\\d+\\)|do\\(\\)|don't\\(\\)") |>
list_c() |>
str_c(collapse = " ") |>
str_split_1(pattern = " (?=do\\(\\)|don't\\(\\))") |>
keep(\(x) !str_detect(x, pattern = "^don't")) |>
str_remove_all(pattern = "do\\(\\) ") |>
str_c(collapse = " ") |>
str_split_1(pattern = " ")
valid_input |>
tibble(numbers = str_extract_all(valid_input, pattern = "\\d+")) |>
unnest_wider(numbers, names_sep = "_") |>
mutate(across(starts_with("numbers_"), as.integer),
product = numbers_1 * numbers_2) |>
summarise(total = sum(product)) |>
pull(total) |>
cat()
## 95846796