-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path06.koto
64 lines (52 loc) · 1.35 KB
/
06.koto
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
# https://adventofcode.com/2020/day/6
count_answers_part_one = |answers|
result = 0
answers_for_group = {}
for line in answers.lines()
if line.is_empty()
result += answers_for_group.size()
answers_for_group = {}
else
for answer in line
answers_for_group.insert answer
result + answers_for_group.size()
count_answers_part_two = |answers|
count_for_group = |people_in_group, answers_for_group|
answers_for_group
.keep |(_, count)| count == people_in_group
.count()
result = 0
answers_for_group = {}
people_in_group = 0
for line in answers.lines()
if line.is_empty()
result += count_for_group people_in_group, answers_for_group
answers_for_group = {}
people_in_group = 0
else
people_in_group += 1
for answer in line
answers_for_group.update answer, 0, |count| count + 1
result + count_for_group people_in_group, answers_for_group
@main = ||
input = io.read_to_string io.extend_path koto.script_dir, "input", "06"
print "Part one: ${count_answers_part_one input}" # 6903
print "Part two: ${count_answers_part_two input}" # 3493
@tests =
@pre_test: ||
self.input = "\
abc
a
b
c
ab
ac
a
a
a
a
b"
@test part_one: ||
assert_eq (count_answers_part_one self.input), 11
@test part_two: ||
assert_eq (count_answers_part_two self.input), 6