Day 4

Advent of Code: Worked Solutions

About
Date

December 4, 2022

Setup

# Libraries
library(tidyverse)

# Read input from file
input <- read_csv("../input/day04.txt", col_names = FALSE)

Parts 1 & 2

input |>  
  separate(X1, into = c("start1", "end1"), sep = "-", convert = TRUE) |>
  separate(X2, into = c("start2", "end2"), sep = "-", convert = TRUE) |>
  mutate(
    range1 = map2(start1, end1, ~ .x:.y),
    range2 = map2(start2, end2, ~ .x:.y),
    contained = map2_lgl(range1, range2, ~ all(.x %in% .y) | all(.y %in% .x)),
    overlap   = map2_lgl(range1, range2, ~ length(intersect(.x, .y)) > 0)
  ) |>
  summarize(num_contained = sum(contained), num_overlap = sum(overlap))