-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path01.R
43 lines (32 loc) · 782 Bytes
/
01.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# Vectorized (base R)
readLines("input01") %>%
as.numeric -> cals
cals[is.na(cals)] <- 0
rr <- rle(cumsum(cals))
cs <- rr$values[rr$length == 2]
elves <- c(cs[1], diff(cs))
max(elves)
sum(tail(sort(elves), 3))
# Vectorized (tidyverse)
library(tidyverse)
read_file("input01") %>%
str_split_1("\\n\\n") %>%
map_int(~ str_split_1(., "\\n") %>%
as.integer %>%
sum(na.rm = TRUE)) -> elves
max(elves)
sum(tail(sort(elves), 3))
# Iterative version
readLines("input01") %>%
as.numeric -> cals
elves <- list()
elves[[1]] <- 0
for (i in 1:length(cals)) {
if (is.na(cals[[i]]))
elves[[length(elves) + 1]] <- 0
else
elves[[length(elves)]] <- cals[[i]] + elves[[length(elves)]]
}
elves <- unlist(elves)
max(elves)
sum(tail(sort(elves), 3))