Today’s puzzle is a good example of thinking “R-ishly”. In R, I find it easier to compare vectors than to compare strings, and easier to work with vectorized functions than to loop. So my code starts by splitting the input into a vector.

**Part 1:**

Split the input into a vector, add the first value to the end, and use dplyr’s lead() function to compare each value to the following value:

1 2 3 4 5 6 7 |
library(stringr) library(dplyr) target <- "112345567891" # should yield 1 + 5 + 1 = 7 target <- str_split(target, "") %>% unlist %>% as.numeric() # split input string into a vector: target <- c(target, target[1]) # add the first value to the end, to account for wrap-around sum(target[target == lead(target)], na.rm = TRUE) # sum every number that matches the number following it |

**Part 2:**

This challenge is simpler, in my opinion. You can halve the vector, then compare the first half to the second half, summing the matches (don’t forget to double that result).

1 2 3 4 5 |
target <- "123425" # should match both 2s for a total of 4 target <- str_split(target, "") %>% unlist %>% as.numeric() first_half <- target[1:(length(target)/2)] second_half <- target[-c(1:(length(target)/2))] sum(first_half[first_half == second_half], na.rm = TRUE) * 2 |