library(tidyverse)
input <- read_lines(file = "inputs/2018/02.txt")
doubles <- function(x)
any(table(str_split_1(x, pattern = "")) == 2)
triples <- function(x)
any(table(str_split_1(x, pattern = "")) == 3)
cat(sum(map_lgl(input, doubles)) * sum(map_lgl(input, triples)))
## 6944Day 2: Inventory Management System
Note
I tried using regular expressions to solve part one problem without success. This idea is what I used.
For part two reference uses stringdist package. I used a different approach (nested for loops and utils::adist()).
Part One
Part Two
find_almost_equal <- function(input)
for (i in 1:(length(input) - 1))
for (j in (i+1):length(input))
if (adist(input[i], input[j]) == 1)
return(c(i,j))
targets <- find_almost_equal(input)
target_1 <- str_split_1(input[targets[1]], pattern = "")
target_2 <- str_split_1(input[targets[2]], pattern = "")
str_split_1(input[targets[1]], pattern = "")[target_1 == target_2] |>
paste0(collapse = "") |>
cat()
## srijafjzloguvlntqmphenbkd