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)
|
||
|
}
|