Add tasks for all the new languages

This commit is contained in:
Tina Müller 2016-12-05 23:44:36 +01:00
parent 9dc3c2bb62
commit bba7bfd280
13208 changed files with 134745 additions and 0 deletions

View file

@ -0,0 +1,65 @@
class Set(*set) {
method init {
var elems = set;
set = Hash.new;
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 (Set that) {
Set(set.values..., that.values...);
}
method ∩(Set that) {
Set(set.keys.grep{ |k| k ∈ that } \
.map { |k| set{k} }...);
}
method (Set that) {
Set(set.keys.grep{|k| !(k ∈ that) } \
.map {|k| set{k} }...);
}
method ^(Set that) {
var d = ((self that) (that self));
Set(d.values...);
}
method count { set.len }
method ≡(Set that) {
(self that -> count.is_zero) && (that self -> count.is_zero);
}
method values { set.values }
method ⊆(Set that) {
that.set.keys.each { |k|
k ∈ self || return false;
}
return true;
}
method to_s {
"Set{" + set.values.map{|e| "#{e}"}.sort.join(', ') + "}"
}
}
class Object {
method ∈(Set set) {
set.has(self);
}
}