package main

import (
	"bytes"
	"fmt"

	h "git.bullercodeworks.com/brian/adventofcode/helpers"
)

func main() {
	fmt.Println("# Day 6")
	inp := h.StdinToStringSlice()
	part2(inp)
}

func part1(inp []string) {
	yeses := make(map[byte]bool)
	var total int
	for _, v := range inp {
		if v == "" {
			fmt.Printf("Group Total: %d\n", len(yeses))
			total = total + len(yeses)
			yeses = make(map[byte]bool)
		} else {
			for _, i := range v {
				yeses[byte(i)] = true
			}
		}
	}
	fmt.Printf("Group Total: %d\n", len(yeses))
	total = total + len(yeses)
	fmt.Printf("Answer: %d\n", total)
}

func part2(inp []string) {
	var total int
	yeses := []byte{}
	newgroup := true
	for _, v := range inp {
		if v == "" {
			newgroup = true
			var grouptotal int
			for yk := range yeses {
				if yeses[yk] != ' ' {
					grouptotal++
				}
			}
			total = total + grouptotal
			fmt.Printf("Totals: %d -> %d\n", grouptotal, total)
		} else {
			if newgroup {
				newgroup = false
				yeses = []byte(v)
				fmt.Println("Initializing", string(yeses))
			} else {
				for yk, yv := range yeses {
					if !bytes.Contains([]byte(v), []byte{yv}) {
						yeses[yk] = ' '
						fmt.Println("Removing", string(yv), "->", string(yeses))
					}
				}
			}
		}
	}
	var grouptotal int
	for yk := range yeses {
		if yeses[yk] != ' ' {
			grouptotal++
		}
	}
	total = total + grouptotal
	fmt.Printf("Totals: %d -> %d\n", grouptotal, total)
	fmt.Printf("Answer: %d\n", total)
}
