# Libraries
library(tidyverse)
# Read input from file
<- read_lines("../input/day11.txt", skip_empty_rows = TRUE) |>
input str_split_1(" ") |>
as.integer()
Day 11
Advent of Code: Worked Solutions
Setup
Part 1
Create blink functions:
<- function(x) {
blink <- format(x, scientific = FALSE)
char <- str_length(char)
n
if (x == 0)
1
else if (n %% 2 == 0)
parse_number(c(
str_sub(char, 1, n / 2),
str_sub(char, n / 2 + 1, n)
))else
* 2024
x
}
<- function(df, n) {
blink_n if (n == 0)
return(sum(df$n))
|>
df mutate(stones = map(stones, blink)) |>
unnest(stones) |>
summarize(n = sum(n), .by = stones) |>
blink_n(n - 1)
}
Run blink function 25 times on puzzle input:
<- tibble(stones = input, n = 1)
df
blink_n(df, 25)
[1] 193899
Part 2
Run blink function 75 times on puzzle input:
blink_n(df, 75) |>
format(scientific = FALSE)
[1] "229682160383225"