RosettaCodeData/Task/Set/Phix/set-1.phix

63 lines
1.4 KiB
Plaintext

sequence set1 = {1,2,3},
set2 = {3,4,5}
function element(object x, sequence set)
return find(x,set)!=0
end function
function union(sequence set1, sequence set2)
for i=1 to length(set2) do
if not element(set2[i],set1) then
set1 = append(set1,set2[i])
end if
end for
return set1
end function
function intersection(sequence set1, sequence set2)
sequence res = {}
for i=1 to length(set1) do
if element(set1[i],set2) then
res = append(res,set1[i])
end if
end for
return res
end function
function difference(sequence set1, sequence set2)
sequence res = {}
for i=1 to length(set1) do
if not element(set1[i],set2) then
res = append(res,set1[i])
end if
end for
return res
end function
function subset(sequence set1, sequence set2)
for i=1 to length(set1) do
if not element(set1[i],set2) then
return false
end if
end for
return true
end function
function equality(sequence set1, sequence set2)
if length(set1)!=length(set2) then
return false
end if
return subset(set1,set2)
end function
--test code:
?element(3,set1) -- 1
?element(4,set1) -- 0
?union(set1,set2) -- {1,2,3,4,5}
?intersection(set1,set2) -- {3}
?difference(set1,set2) -- {1,2}
?subset(set1,set2) -- 0
?subset({1,2},set1) -- 1
?equality(set1,set2) -- 0
?equality(set1,{3,1,2}) -- 1