36 lines
627 B
Go
36 lines
627 B
Go
package main
|
|
|
|
import (
|
|
"bufio"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
)
|
|
|
|
func findMarker(line string) int {
|
|
if len(line) < 4 {
|
|
return -1
|
|
}
|
|
if line[0] != line[1] && line[0] != line[2] && line[0] != line[3] && line[1] != line[2] && line[1] != line[3] && line[2] != line[3] {
|
|
return 0
|
|
}
|
|
return 1 + findMarker(line[1:])
|
|
}
|
|
|
|
func main() {
|
|
file, err := os.Open("./input.txt")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer file.Close()
|
|
scanner := bufio.NewScanner(file)
|
|
for scanner.Scan() {
|
|
line := scanner.Text()
|
|
marker := findMarker(line)
|
|
if marker != -1 {
|
|
fmt.Println(line[marker:marker+4], len(line[:marker+4]))
|
|
break
|
|
}
|
|
}
|
|
}
|