diff --git a/day06/common/signal.go b/day06/common/signal.go new file mode 100644 index 0000000..80801f7 --- /dev/null +++ b/day06/common/signal.go @@ -0,0 +1,13 @@ +package common + +import ( + "bufio" +) + +type Signal string + + +func Parse(scanner bufio.Scanner) Signal { + scanner.Scan() + return Signal(scanner.Text()) +} diff --git a/day06/ex1/main.go b/day06/ex1/main.go new file mode 100644 index 0000000..69ca825 --- /dev/null +++ b/day06/ex1/main.go @@ -0,0 +1,26 @@ +package main + +import ( + "bufio" + "fmt" + "os" + "aoc2022/day06/common" +) + +func main() { + signal := common.Parse(*bufio.NewScanner(os.Stdin)) + index := 0 + + for i := 4; i <= len(signal); i++ { + set := make(map[rune]bool) + for _, c := range signal[i-4:i] { + set[c] = true + } + if len(set) == 4 { + index = i + break + } + } + + fmt.Println(index) +} diff --git a/day06/ex2/main.go b/day06/ex2/main.go new file mode 100644 index 0000000..a62b389 --- /dev/null +++ b/day06/ex2/main.go @@ -0,0 +1,26 @@ +package main + +import ( + "bufio" + "fmt" + "os" + "aoc2022/day06/common" +) + +func main() { + signal := common.Parse(*bufio.NewScanner(os.Stdin)) + index := 0 + + for i := 14; i <= len(signal); i++ { + set := make(map[rune]bool) + for _, c := range signal[i-14:i] { + set[c] = true + } + if len(set) == 14 { + index = i + break + } + } + + fmt.Println(index) +}