package main import ( "fmt" h "git.bullercodeworks.com/brian/adventofcode/helpers" ) func main() { inp := h.StdinToStringSlice() fmt.Println("# Part 1") fmt.Println(part1(inp)) fmt.Println("# Part 2") fmt.Println(part2(inp)) } func part1(inp []string) int { var ret int for i := range inp { sack := inp[i] c1, c2 := sack[:len(sack)/2], sack[len(sack)/2:] var dupe byte for _, c1w := range c1 { for _, c2w := range c2 { if c1w == c2w { dupe = byte(c1w) break } } if dupe != 0 { break } } if dupe >= 'a' { ret += int(dupe - 'a' + 1) } else if dupe >= 'A' { ret += int(dupe - 'A' + 27) } } return ret } func part2(inp []string) int { var ret int elves := []string{"", "", ""} for i := range inp { elves[i%3] = inp[i] if i%3 == 2 { var badge byte // Check 'em for _, e1 := range elves[0] { for _, e2 := range elves[1] { for _, e3 := range elves[2] { if e1 == e2 && e2 == e3 { badge = byte(e1) } } if badge != 0 { break } } if badge != 0 { break } } if badge >= 'a' { ret += int(badge - 'a' + 1) } else if badge >= 'A' { ret += int(badge - 'A' + 27) } } } return ret }