main.go (1190B)
1 package main
2
3 import (
4 "bufio"
5 "fmt"
6 "os"
7 )
8
9 func readInput(filename string) (res [][]string) {
10 file, _ := os.Open(filename)
11 defer file.Close()
12
13 scanner := bufio.NewScanner(file)
14 group_ans := []string{}
15 for scanner.Scan() {
16 line := scanner.Text()
17 if line == "" {
18 res = append(res, group_ans)
19 group_ans = []string{}
20 } else {
21 group_ans = append(group_ans, line)
22 }
23 }
24 res = append(res, group_ans)
25 return
26 }
27
28 func main() {
29 input := readInput("./input.txt")
30 // 6457
31 fmt.Println(part1(input))
32 // 3260
33 fmt.Println(part2(input))
34 }
35
36 func part1(input [][]string) (yes_count int) {
37 for _, group_ans := range input {
38 answered_count := make(map[rune]int)
39 for _, person_ans := range group_ans {
40 for _, ans := range person_ans {
41 answered_count[ans] += 1
42 }
43 }
44 yes_count += len(answered_count)
45 }
46 return
47 }
48
49 func part2(input [][]string) (yes_count int) {
50 for _, group_ans := range input {
51 answered_count := make(map[rune]int)
52 for _, person_ans := range group_ans {
53 for _, ans := range person_ans {
54 answered_count[ans] += 1
55 }
56 }
57 for _, count := range answered_count {
58 if count == len(group_ans) {
59 yes_count += 1
60 }
61 }
62 }
63 return
64 }