suppressPackageStartupMessages({
library(tidyverse)
library(httr2)
})
adventofcode_input <- \(year, day, what = c("data.frame", "character")) {
session <- Sys.getenv("ADVENT_SESSION")
if (session == "") {
stop("Must set ADVENT_SESSION in .Renviron")
}
url <- paste0("https://adventofcode.com/", year, "/day/", day, "/input")
tryCatch({
res <- request(url) |>
req_cookies_set(session = session) |>
req_perform() |>
resp_body_string(encoding = "UTF-8")
},
error = \(e) stop("Error getting the input file")
)
if(what[1] == "data.frame") {
return(data.frame(x = res |> strsplit("\n") |> unlist()))
}
if(what[1] == "character") {
return(res)
}
}Day 3
AdventOfCode > 2024
Part 1
"xmul(2,4)%&mul[3,7]!@^do_not_mul(5,5)+mul(32,64]then(mul(11,8)mul(8,5))" |>
str_extract_all('mul\\(\\d{1,3},\\d{1,3}\\)') |>
unlist() |>
str_replace_all("mul", "") |>
str_replace_all(",", "*") |>
map_int(\(x) eval(parse(text = x))) |>
sum()[1] 161
adventofcode_input(2024, 3, "character") |>
str_extract_all('mul\\(\\d{1,3},\\d{1,3}\\)') |>
unlist() |>
str_replace_all("mul", "") |>
str_replace_all(",", "*") |>
map_int(\(x) eval(parse(text = x))) |>
sum()[1] 188116424
Part 2
"xmul(2,4)&mul[3,7]!^don't()_mul(5,5)+mul(32,64](mul(11,8)undo()?mul(8,5))" |>
str_split("do(?=(n't)?\\(\\))") |>
unlist() |>
discard(\(x) str_detect(x, 'n\'t')) |>
paste0(collapse = "") |>
str_extract_all('mul\\(\\d{1,3},\\d{1,3}\\)') |>
unlist() |>
str_replace_all("mul", "") |>
str_replace_all(",", "*") |>
map_int(\(x) eval(parse(text = x))) |>
sum()[1] 48
adventofcode_input(2024, 3, "character") |>
str_split("do(?=(n't)?\\(\\))") |>
unlist() |>
discard(\(x) str_detect(x, 'n\'t')) |>
paste0(collapse = "") |>
str_extract_all('mul\\(\\d{1,3},\\d{1,3}\\)') |>
unlist() |>
str_replace_all("mul", "") |>
str_replace_all(",", "*") |>
map_int(\(x) eval(parse(text = x))) |>
sum()[1] 104245808