library(tidyverse)
input <- read_csv(file = "inputs/2016/06.txt", col_names = "original")Day 6: Signals and Noise
Part One
mode <- function(x, na.rm = FALSE) {
if (na.rm) x <- x[!is.na(x)]
ux <- unique(x)
return(ux[which.max(tabulate(match(x, ux)))])
}
splitted_strings <- input |>
mutate(char = str_split(string = original, pattern = "")) |>
unnest_wider(col = char, names_sep = "_")
splitted_strings |>
summarise(across(-original, mode)) |>
unite("error_corrected", everything(), sep = "") |>
pull(error_corrected) |>
cat()
## xhnqpqqlPart Two
least_common <- function(x, na.rm = FALSE) {
if (na.rm) x <- x[!is.na(x)]
ux <- unique(x)
return(ux[which.min(tabulate(match(x, ux)))])
}
splitted_strings |>
summarise(across(-original, least_common)) |>
unite("error_corrected", everything(), sep = "") |>
pull(error_corrected) |>
cat()
## brhailro