AoC2020/day6/day6.go

66 lines
1.2 KiB
Go
Raw Normal View History

2020-12-06 20:07:55 +01:00
package main
import (
"AoC2020/helper"
"fmt"
"os"
"strings"
)
func main() {
args := os.Args[1:]
input, err := helper.GetFile(args[0])
if err != nil {
fmt.Println(err)
}
groups := strings.Split(input, "\n\n")
fmt.Println(day6(groups))
fmt.Println(day6Part2(groups))
}
func day6(groups []string) int {
var count int
for _, group := range groups {
count += len(getYesAnsweredQuestions(group))
}
return count
}
func day6Part2(groups []string) int {
var count int
for _, group := range groups {
count += getQuestionsEveryoneAnsweredYes(group)
}
return count
}
func getYesAnsweredQuestions(group string) string {
var answeredQuestions string
persons := strings.Split(group, "\n")
for _, person := range persons {
for _, answer := range person {
if !strings.Contains(answeredQuestions, string(answer)) {
answeredQuestions += string(answer)
}
}
}
return answeredQuestions
}
func getQuestionsEveryoneAnsweredYes(group string) int {
var questions [26]int
persons := strings.Split(group, "\n")
for _, person := range persons {
for _, answer := range person {
questions[answer-97] += 1
}
}
count := 0
for _,question := range questions {
if question == len(persons){
count++
}
}
return count
}