45 lines
691 B
Go
45 lines
691 B
Go
package main
|
|
|
|
import (
|
|
"bufio"
|
|
"bytes"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"log"
|
|
)
|
|
|
|
func main() {
|
|
f, err := ioutil.ReadFile("input")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
reader := bufio.NewReader(bytes.NewReader(f))
|
|
var valid int
|
|
for {
|
|
line, err := reader.ReadString('\n')
|
|
if err != nil {
|
|
break
|
|
}
|
|
var pw string
|
|
var min, max int
|
|
var char rune
|
|
n, err := fmt.Sscanf(line, "%d-%d %c: %s", &min, &max, &char, &pw)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
if n != 4 {
|
|
panic("mismatched Scanf")
|
|
}
|
|
var count int
|
|
for _, currentChar := range pw {
|
|
if currentChar == char {
|
|
count++
|
|
}
|
|
}
|
|
if count >= min && count <= max {
|
|
valid++
|
|
}
|
|
}
|
|
log.Printf("%d valid entries", valid)
|
|
}
|