Day 2: Corruption Checksum

Reference

Part One

library(tidyverse)

input <- read_table(file = "inputs/2017/02.txt", col_names = FALSE)

max_minus_min <- function(x) max(x) - min(x)

input |> 
    rowwise() |>
    mutate(line_check = max_minus_min(across(everything()))) |> 
    ungroup() |>
    summarise(checksum = sum(line_check)) |> 
    pull(checksum) |> 
    cat()
## 21845

Part Two

division <- function(x) {
    for(i in seq_along(x)) {
        for(j in seq_along(x)) {
            if (x[i] %% x[j] == 0 & i != j) return(x[i] / x[j])
        }
    }
}

# I couldn't find a purrr (or tidyverse) way of doing this
input |> 
    apply(MARGIN = 1, FUN = division) |> 
    sum() |> 
    cat()
## 191