Skip to content

Instantly share code, notes, and snippets.

@kenoir
Created December 7, 2022 15:11
Show Gist options
  • Save kenoir/c3432f34dc2917bd03aa5a0b2a7e0816 to your computer and use it in GitHub Desktop.
Save kenoir/c3432f34dc2917bd03aa5a0b2a7e0816 to your computer and use it in GitHub Desktop.
Advent of Code (Day 6)
package main
import (
"fmt"
"errors"
)
func find_unique(signal string) (int, error) {
signal_length := len(signal)
unique_length := 4
var check_string string
for i := 0; i <= signal_length-unique_length; i++ {
check_string = signal[i : i+unique_length]
char_map := make(map[string]int)
for _, r := range check_string {
if _, ok := char_map[string(r)]; ok {
char_map[string(r)]++
} else {
char_map[string(r)] = 1
}
}
found_unique := true
for _,count := range char_map {
if count > 1 {
found_unique = false
}
}
// fmt.Printf("%v\n", found_unique)
// fmt.Printf("%v\n", char_map)
// fmt.Printf("%v\n", check_string)
if found_unique {
return i + unique_length, nil
}
}
return -1, errors.New("No unique found")
}
// https://adventofcode.com/2022/day/6
func main() {
signals := []string{
"bvwbjplbgvbhsrlpgdmjqwftvncz",
"nppdvjthqldpwncqszvftbrmjlhg",
"nznrnfrfntjfmvfwmzdfjlvtqnbhcprsg",
"zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw",
"gregregregregregregregregregreg",
}
for _, signal := range signals {
found, err := find_unique(signal)
if err != nil {
fmt.Printf("No unique found in: %v\n", signal)
} else {
fmt.Printf("Unique found at: %v\n", found)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment