-
Notifications
You must be signed in to change notification settings - Fork 0
/
day06.R
81 lines (66 loc) · 1.87 KB
/
day06.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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
test_input <- c(
"abc",
"",
"a",
"b",
"c",
"",
"ab",
"ac",
"",
"a",
"a",
"a",
"a",
"",
"b"
)
real_input <- readLines("./inputs/day06-input.txt")
#- LOGIC ----------------------------------------------------------------------#
# returns list of groups with answers of every passenger as an element of a list
split_into_groups <- function(input) {
end_of_line <- ":eol:"
input %>%
paste(collapse = end_of_line) %>%
strsplit(split = paste0(end_of_line, end_of_line)) %>%
unlist() %>%
strsplit(split = end_of_line)
}
count_anyone_unique_answers <- function(group_answers) {
group_answers %>%
Map(f = function(x) paste(x, collapse = "")) %>%
unlist() %>%
strsplit(split = "") %>%
Map(f = unique) %>%
Map(f = length) %>%
unlist()
}
count_everyone_answers <- function(group_answers) {
group_answers %>%
Map(f = function(x) {
x %>%
strsplit(x, split = "") %>%
Reduce(f = intersect, init = letters)
}) %>%
Map(f = unique) %>%
Map(f = length) %>%
unlist()
}
#- SOLUTION PART 1 ------------------------------------------------------------#
day06_part1_solution <- function(input) {
input %>% split_into_groups %>% count_anyone_unique_answers %>% sum
}
test_output_part1 <- 11
test_result <- day06_part1_solution(test_input)
print(paste("test result:", test_result, "valid:", test_result == test_output_part1))
real_result_part1 <- day06_part1_solution(real_input)
print(real_result_part1)
#- SOLUTION PART 2 ------------------------------------------------------------#
day06_part2_solution <- function(input) {
input %>% split_into_groups %>% count_everyone_answers %>% sum
}
test_output_part2 <- 6
test_result <- day06_part2_solution(test_input)
print(paste("test result:", test_result, "valid:", test_result == test_output_part2))
real_result_part2 <- day06_part2_solution(real_input)
print(real_result_part2)