Day 5: Doesn’t He Have Intern-Elves For This?

Reference

library(tidyverse)

input <- read_csv(file = "inputs/2015/05.txt", col_names = "original")

Part One

nice <- input |> 
    mutate(
        three_more_vowels = str_count(original, "[aeiou]") >= 3,
        one_more_double = str_detect(original, "([a-z])\\1"),
        not_ab_cd_pq_xy = !str_detect(original, "ab|cd|pq|xy"),
        nice = three_more_vowels & one_more_double & not_ab_cd_pq_xy
    )

total_nice_strings <- sum(nice$nice)
cat("Total nice strings (old rules):", total_nice_strings, "\n")
## Total nice strings (old rules): 258

Part Two

nice_new <- input |> 
    mutate(
        repeating_pair = str_detect(original, "([a-z]{2}).*\\1"),
        repeat_with_gap = str_detect(original, "([a-z]).\\1"),
        nice_new = repeating_pair & repeat_with_gap
    )

total_nice_strings_new <- sum(nice_new$nice_new)
cat("Total nice strings (new rules):", total_nice_strings_new, "\n")
## Total nice strings (new rules): 53