diff --git a/2017/day04/day04.go b/2017/day04/day04.go index aa56df4..60fb775 100644 --- a/2017/day04/day04.go +++ b/2017/day04/day04.go @@ -13,15 +13,14 @@ func main() { part2(inp) } -func part1(inp []string) { - fmt.Println("== Part 1 ==") +func findValid(inp []string, cmp func(string, string) bool) { cnt := 0 for _, v := range inp { wrds := strings.Split(v, " ") isGood := true for i := range wrds { for j := i + 1; j < len(wrds); j++ { - if wrds[i] == wrds[j] { + if cmp(wrds[i], wrds[j]) { isGood = false } if !isGood { @@ -39,30 +38,20 @@ func part1(inp []string) { fmt.Println("Valid Passphrases:", cnt) } +func part1(inp []string) { + fmt.Println("== Part 1 ==") + cmp := func(wrd1, wrd2 string) bool { + return wrd1 == wrd2 + } + findValid(inp, cmp) +} + func part2(inp []string) { fmt.Println("== Part 2 ==") - cnt := 0 - for _, v := range inp { - wrds := strings.Split(v, " ") - isGood := true - for i := range wrds { - for j := i + 1; j < len(wrds); j++ { - if isAnagram(wrds[i], wrds[j]) { - isGood = false - } - if !isGood { - break - } - } - if !isGood { - break - } - } - if isGood { - cnt++ - } + cmp := func(wrd1, wrd2 string) bool { + return isAnagram(wrd1, wrd2) } - fmt.Println("Valid Passphrases:", cnt) + findValid(inp, cmp) } func isAnagram(wrd1, wrd2 string) bool {