RosettaCodeData/Task/Set/Nanoquery/set-1.nanoquery

79 lines
2.2 KiB
Plaintext

class set
declare internal_list
def set()
internal_list = list()
end
def set(list)
internal_list = list
end
def append(value)
if not value in internal_list
internal_list.append(value)
end
return this
end
def contains(value)
return value in internal_list
end
def difference(other)
diff = list()
for value in this.internal_list
diff.append(value)
end
for i in range(len(diff) - 1, 0)
if diff[i] in other.internal_list
diff.remove(i)
end
end
return new(set, diff)
end
def operator=(other)
for value in other.internal_list
if not value in this.internal_list
return false
end
end
return true
end
def intersection(other)
intersect = list()
for value in this.internal_list
if other.contains(value)
intersect.append(value)
end
end
return new(set, intersect)
end
def subset(other)
for value in this.internal_list
if not value in other.internal_list
return false
end
end
return true
end
def union(other)
u = list()
for value in this.internal_list
u.append(value)
end
for value in other.internal_list
if not value in u
u.append(value)
end
end
return new(set, u)
end
def toString()
return str(this.internal_list)
end
end