44 lines
693 B
Go
44 lines
693 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")
|
|
}
|
|
min--
|
|
max--
|
|
has1 := rune(pw[min]) == char
|
|
has2 := rune(pw[max]) == char
|
|
if has1 == has2 { // both false or both true
|
|
continue
|
|
}
|
|
valid++
|
|
}
|
|
log.Printf("%d valid entries", valid)
|
|
}
|