52 lines
832 B
AutoHotkey
52 lines
832 B
AutoHotkey
test(Set,element){
|
|
for i, val in Set
|
|
if (val=element)
|
|
return true
|
|
return false
|
|
}
|
|
|
|
Union(SetA,SetB){
|
|
SetC:=[], Temp:=[]
|
|
for i, val in SetA
|
|
SetC.Insert(val), Temp[val] := true
|
|
for i, val in SetB
|
|
if !Temp[val]
|
|
SetC.Insert(val)
|
|
return SetC
|
|
}
|
|
|
|
intersection(SetA,SetB){
|
|
SetC:=[], Temp:=[]
|
|
for i, val in SetA
|
|
Temp[val] := true
|
|
for i, val in SetB
|
|
if Temp[val]
|
|
SetC.Insert(val)
|
|
return SetC
|
|
}
|
|
|
|
difference(SetA,SetB){
|
|
SetC:=[], Temp:=[]
|
|
for i, val in SetB
|
|
Temp[val] := true
|
|
for i, val in SetA
|
|
if !Temp[val]
|
|
SetC.Insert(val)
|
|
return SetC
|
|
}
|
|
|
|
subset(SetA,SetB){
|
|
Temp:=[], A:=B:=0
|
|
for i, val in SetA
|
|
Temp[val] := true , A++
|
|
for i, val in SetB
|
|
if Temp[val]{
|
|
B++
|
|
IfEqual, A, %B%, return 1
|
|
} return 0
|
|
}
|
|
|
|
equal(SetA,SetB){
|
|
return (SetA.MaxIndex() = SetB.MaxIndex() && subset(SetA,SetB)) ? 1: 0
|
|
}
|