-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path06.go
65 lines (56 loc) · 1.31 KB
/
06.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package main
import (
"fmt"
)
func AOC202206FindUnique(input string, length int) int {
OUTER:
for i := 0; i < len(input)-length; i++ {
for first := i; first < i+length-1; first++ {
for second := first + 1; second < i+length; second++ {
if input[first] == input[second] {
continue OUTER
}
}
}
return i + length
}
return 0
}
func AOC202206FindUniqueJump(input string, length int) int {
OUTER:
for i := 0; i < len(input)-length; i++ {
for first := i; first < i+length-1; first++ {
for second := first + 1; second < i+length; second++ {
if input[first] == input[second] {
i = first
continue OUTER
}
}
}
return i + length
}
return 0
}
func AOC202206FindUniqueReverseJump(input string, length int) int {
OUTER:
for i := length - 1; i < len(input)-1; i++ {
for first := i; first > i-length+1; first-- {
for second := first - 1; second > i-length; second-- {
if input[first] == input[second] {
i = second + length - 1
continue OUTER
}
}
}
return i + 1
}
return 0
}
func AOC2022061(input string) (string, error) {
index := AOC202206FindUniqueReverseJump(input, 4)
return fmt.Sprintf("%d", index), nil
}
func AOC2022062(input string) (string, error) {
index := AOC202206FindUniqueReverseJump(input, 14)
return fmt.Sprintf("%d", index), nil
}