32 lines
466 B
Go
32 lines
466 B
Go
package utils
|
|
|
|
func Difference[T any](a, b []T, com func(T, T) bool) []T {
|
|
var ans []T
|
|
for _, x := range a {
|
|
unique := true
|
|
for _, y := range b {
|
|
if com(x, y) {
|
|
unique = false
|
|
break
|
|
}
|
|
}
|
|
if unique {
|
|
ans = append(ans, x)
|
|
}
|
|
}
|
|
return ans
|
|
}
|
|
|
|
func Intersect[T any](a, b []T, com func(T, T) bool) []T {
|
|
var ans []T
|
|
for _, x := range a {
|
|
for _, y := range b {
|
|
if com(x, y) {
|
|
ans = append(ans, x)
|
|
break
|
|
}
|
|
}
|
|
}
|
|
return ans
|
|
}
|