library(tidyverse)
input <- read_lines(file = "inputs/2024/02.txt") |>
str_split(pattern = " ") |>
map(as.integer)Day 2: Red-Nosed Reports
Part One
is_safe <- function(x) {
variations <- diff(x)
same_sign <- all(variations > 0) || all(variations < 0)
boundness <- all(abs(variations) <= 3)
same_sign && boundness
}
input |>
tibble(is_safe = map_lgl(input, is_safe)) |>
summarise(total = sum(is_safe)) |>
pull(total) |>
cat()
## 598Part Two
is_safeable <- function(x) {
for (i in seq_along(x)) {
if (is_safe(x[-i]))
return(TRUE)
}
return(FALSE)
}
input |>
tibble(is_safe = map_lgl(input, is_safe),
is_safeable = map_lgl(input, is_safeable),
is_ok = is_safe | is_safeable) |>
summarise(total = sum(is_ok)) |>
pull(total) |>
cat()
## 634