package main import ( "time" ) func combine(x, y Change) Change { x.Count++ if x.Body == "" { x.Body = y.Body } else { x.Body += " " + y.Body } x.EndDate = y.Date return x } func changeEqual(x, y Change) bool { return x.Page == y.Page && x.Date.Truncate(24*time.Hour) == y.Date.Truncate(24*time.Hour) } func groupRecentChanges(changes []Change) int { if len(changes) <= 1 { return 0 } f := len(changes) - 1 i := f - 1 for { if changeEqual(changes[f], changes[i]) { changes[f] = combine(changes[f], changes[i]) } else { f-- changes[f] = changes[i] } if i <= 0 { break } i-- } return f }