Advent of Code 2020

2.R 764B

1234567891011121314151617181920
  1. library(stringr)
  2. library(dplyr)
  3. input <- read.csv("input2.csv", header=F, stringsAsFactors=F)
  4. names(input) = "Orig"
  5. # First question
  6. input %>% mutate(minv = as.numeric(str_extract(Orig, "[0-9]+")),
  7. maxv = as.numeric(str_extract(str_extract(Orig, "-[0-9]+"), "[0-9]+")),
  8. letter = str_extract(Orig, "[a-z]"),
  9. pword = str_extract(Orig, "[a-z]+$"),
  10. count = str_count(pword, letter),
  11. valid = (count <= maxv) & (count >= minv)) -> result
  12. # 607
  13. sum(result$valid)
  14. # Second question
  15. result %>% mutate(fpos = str_sub(pword, minv, minv) == letter,
  16. spos = str_sub(pword, maxv, maxv) == letter,
  17. valid2 = (fpos + spos) == 1) -> result
  18. sum(result$valid2)