pgoultiaev/aoc2017

View on GitHub
4/4.go

Summary

Maintainability
A
0 mins
Test Coverage
package main

import (
    "bufio"
    "fmt"
    "log"
    "os"
    "strings"

    "github.com/pgoultiaev/aoc2017/util"
)

func main() {
    file, err := os.Open("4.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    scanner := bufio.NewScanner(file)
    sum1 := 0
    sum2 := 0
    i := 0
    for scanner.Scan() {
        slicedString := strings.Split(scanner.Text(), " ")

        valid1 := true
        valid2 := true
        m := map[string]string{}
        for j, word := range slicedString {
            if m[word] != "" {
                // fmt.Printf("found duplicate word %s at line %d\n", word, i)
                valid1 = false
                break
            }
            m[word] = word

            for k, compareWord := range slicedString {
                if util.IsPermutation(word, compareWord) && k != j {
                    //fmt.Printf("found permutation [%s,%s] at line %d\n", word, compareWord, i)
                    valid2 = false
                }
            }
        }

        if valid1 == true {
            sum1++
        }
        if valid2 == true {
            sum2++
        }
        i++
    }

    fmt.Printf("part one: %d\n", sum1)
    fmt.Printf("part two: %d\n", sum2)
}