-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdec_2.R
48 lines (40 loc) · 1.17 KB
/
dec_2.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
44
45
46
47
48
library(tidyverse)
library(stringi)
library(readxl)
df<-read_xlsx("PATH",col_names = FALSE, col_types = "text")
names(df) <- "text"
get_numbers <- function(string, colour){
string %>%
str_extract(paste0("([0-9]+)(?>\\s",colour,")")) %>%
str_remove("[^0-9]+")%>%
as.numeric()%>%
replace_na(0)
}
#Splitting into game | results
p1 <- df %>%
mutate(
game_id = row_number(),
text = str_remove(text, ".*:")
)%>%
group_by(game_id)%>%
mutate(draws = str_extract_all(text, "[a-z0-9\\s,]*[^;]"))%>%
select(-text)%>%
unnest(draws) %>%
mutate(green = get_numbers(draws, "green"),
blue = get_numbers(draws, "blue"),
red = get_numbers(draws, "red"))
#part 1 solution
get_count <- function(df, nr, ng, nb){
df %>% mutate(
possible = (max(green) <= ng) * (max(blue)<=nb) * (max(red)<=nr)
)
}
get_count(p1, 12,13,14)
#part 2 solution, no df change required
get_power_set <- function(df){
df %>% mutate(
mg = max(green), mb = max(blue), mr = max(red), power = mg*mr*mb
)%>% ungroup() %>% select(game_id, power)
%>%unique()%>%select(power)%>%sum()
}
get_power_set(p1)