Set: Difference between revisions
m
→{{header|Sidef}}: updated the class name, as the Set class is now built-in
No edit summary |
m (→{{header|Sidef}}: updated the class name, as the Set class is now built-in) |
||
Line 4,832:
=={{header|Sidef}}==
{{trans|Perl}}
<lang ruby>class
method init {
var elems = set
set = Hash
elems.each { |e| self += e }
}
method +(elem) {
set{elem} = elem
self
}
method del(elem) {
set.delete(elem)
}
method has(elem) {
set.has_key(elem)
}
method ∪(
}
method ∩(
.map { |k| set{k} }...)
}
method ∖(
.map {|k| set{k} }...)
}
method ^(
var d = ((self ∖ that) ∪ (that ∖ self))
}
method count { set.len }
method ≡(
(self ∖ that -> count.is_zero) && (that ∖ self -> count.is_zero)
}
method values { set.values }
method ⊆(
that.set.keys.each { |k|
k ∈ self || return false
}
return true
}
Line 4,893:
class Object {
method ∈(
set.has(self)
}
}</lang>
Usage example:
<lang ruby>var x =
5..7 -> each { |i| x += i }
var y =
say "set x is: #{x}"
say "set y is: #{y}"
[1,2,3,4,x].each { |elem|
say ("#{elem} is ", elem ∈ y ? '' : 'not', " in y")
}
var (w, z)
say ("union: ", x ∪ y)
say ("intersect: ", x ∩ y)
say ("z = x ∖ y = ", z = (x ∖ y) )
say ("y is ", x ⊆ y ? "" : "not ", "a subset of x")
say ("z is ", x ⊆ z ? "" : "not ", "a subset of x")
say ("z = (x ∪ y) ∖ (x ∩ y) = ", z = ((x ∪ y) ∖ (x ∩ y)))
say ("w = x ^ y = ", w = (x ^ y))
say ("w is ", w ≡ z ? "" : "not ", "equal to z")
say ("w is ", w ≡ x ? "" : "not ", "equal to x")
{{out}}
<pre>
Line 4,940:
w is not equal to x
</pre>
=={{header|Simula}}==
<lang simula>SIMSET
|