summaryrefslogtreecommitdiff
path: root/flood.go
diff options
context:
space:
mode:
Diffstat (limited to 'flood.go')
-rw-r--r--flood.go19
1 files changed, 15 insertions, 4 deletions
diff --git a/flood.go b/flood.go
index bb7bd9e..d5bed85 100644
--- a/flood.go
+++ b/flood.go
@@ -2,21 +2,32 @@ package main
import (
"log"
+ "math"
"sort"
"strings"
irc "github.com/fluffle/goirc/client"
)
+func Entropy(s string) (e float64) {
+ n := make(map[rune]float64)
+ for _, r := range s {
+ n[r] += 1 / float64(len(s))
+ }
+ for _, v := range n {
+ e -= v * math.Log2(v)
+ }
+ return
+}
+
func Flood(s string) bool {
- if s == "" {
+ if len(s) < 4 {
return false
}
- v := strings.Fields(s)
- if len(v) >= 6 {
+ if v := strings.Fields(s); len(v) >= 6 {
return CommonWord(v) >= 2*len(v)/3 || MedianLength(v) == 1
}
- return false
+ return Entropy(s) <= 1
}
func CommonWord(v []string) int {