2
0
mirror of synced 2025-02-24 22:58:28 +00:00
2014-12-26 17:17:00 +11:00

32 lines
557 B
Go

package main
import (
"bufio"
"flag"
"fmt"
"os"
"github.com/willf/bloom"
)
func main() {
m := flag.Uint("m", 0, "")
k := flag.Uint("k", 0, "")
flag.Parse()
filter := bloom.New(*m, *k)
scanner := bufio.NewScanner(os.Stdin)
n := 0
collisions := 0
for scanner.Scan() {
if filter.TestAndAdd(scanner.Bytes()) {
collisions++
}
n++
}
if err := scanner.Err(); err != nil {
fmt.Fprintf(os.Stderr, "error reading stdin: %s", err)
os.Exit(1)
}
fmt.Printf("collisions %d/%d (%f)\n", collisions, n, float64(collisions)/float64(n)*100)
}