package main

import (
	"fmt"
	"log"
	"os"
	"strconv"
	"strings"

	"git.annabunch.es/annabunches/adventofcode/2020/lib/util"
)

func checkLine(line string, step string) int {
	if line == "" {
		return 0
	}

	data := strings.Split(line, " ")
	minMaxData := strings.Split(data[0], "-")

	min, err := strconv.Atoi(minMaxData[0])
	if err != nil {
		log.Panicf(err.Error())
	}
	max, err := strconv.Atoi(minMaxData[1])
	if err != nil {
		log.Panicf(err.Error())
	}
	char := strings.TrimSuffix(data[1], ":")

	switch step {
	case "1":
		count := strings.Count(data[2], char)

		if count >= min && count <= max {
			return 1
		}
		return 0
	case "2":
		bchar := char[0]
		if (data[2][min-1] == bchar || data[2][max-1] == bchar) &&
			!(data[2][min-1] == bchar && data[2][max-1] == bchar) {
			return 1
		}
		return 0
	}

	return 0
}

func main() {
	step := os.Args[1]
	values := util.InputParserStrings(os.Args[2])

	total := 0
	for _, line := range values {
		total += checkLine(line, step)
	}
	fmt.Println("Valid passwords:", total)
}