Day 1

Day 1 challenge code is placed here.

Setup:

fn1 <- function(data_in) {
  list1 <- sort(data_in$X1)
  list2 <- sort(data_in$X4)
  df1 <- tibble::tibble(list1, list2) |>
    dplyr::mutate(diff = abs(list1 - list2)) 
  ans <- sum(df1$diff)
}

fn2 <- function(data_in) {
  list1 <- data_in |>
    dplyr::select(X1)
  list2 <- data_in |>
    dplyr::select(X4) |>
    dplyr::rename(X1 = X4)     
  list2_freq <- list2 |>
    dplyr::group_by(X1) |>
    dplyr::mutate(freq = dplyr::n()) |>
    dplyr::ungroup() |>
    dplyr::distinct(X1, freq)
  df2 <- dplyr::left_join(list1, list2_freq, by = "X1") |>
    dplyr::mutate(similarity = X1 * freq) 
  ans <- sum(df2$similarity, na.rm = TRUE)
}

Part1 example:

ans <- fn1(readr::read_delim("../data/day01_01_example.txt", col_names = FALSE))
print(cat("Part1 example: ", ans, "\n"))
Part1 example:  11 
NULL

Part1:

ans <- fn1(readr::read_delim("../data/day01_01.txt", col_names = FALSE))
print(cat("Part1: ", ans, "\n"))
Part1:  1530215 
NULL

Part2 example:

ans <- fn2(readr::read_delim("../data/day01_01_example.txt", col_names = FALSE))
print(cat("Part2 example: ", ans, "\n"))
Part2 example:  31 
NULL

Part2:

ans <- fn2(readr::read_delim("../data/day01_01.txt", col_names = FALSE))
print(cat("Part2: ", ans, "\n"))
Part2:  26800609 
NULL