Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
|
|
@ -0,0 +1,31 @@
|
|||
class BinaryTree<Data>(shared Data data, shared BinaryTree<Data>? left = null, shared BinaryTree<Data>? right = null) {
|
||||
|
||||
shared BinaryTree<NewData> myMap<NewData>(NewData f(Data d)) =>
|
||||
BinaryTree {
|
||||
data = f(data);
|
||||
left = left?.myMap(f);
|
||||
right = right?.myMap(f);
|
||||
};
|
||||
}
|
||||
|
||||
shared void run() {
|
||||
|
||||
value tree1 = BinaryTree {
|
||||
data = 3;
|
||||
left = BinaryTree {
|
||||
data = 4;
|
||||
};
|
||||
right = BinaryTree {
|
||||
data = 5;
|
||||
left = BinaryTree {
|
||||
data = 6;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
tree1.myMap(print);
|
||||
print("");
|
||||
|
||||
value tree2 = tree1.myMap((x) => x * 333.33);
|
||||
tree2.myMap(print);
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
type Tree[T] = ref object
|
||||
value: T
|
||||
left, right: Tree[T]
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
class Tree<T> {
|
||||
var value: T?
|
||||
var left: Tree<T>?
|
||||
var right: Tree<T>?
|
||||
|
||||
func replaceAll(value: T?) {
|
||||
self.value = value
|
||||
left?.replaceAll(value)
|
||||
right?.replaceAll(value)
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
enum Tree<T> {
|
||||
case Empty
|
||||
indirect case Node(T, Tree<T>, Tree<T>)
|
||||
|
||||
func map<U>(f : T -> U) -> Tree<U> {
|
||||
switch(self) {
|
||||
case .Empty : return .Empty
|
||||
case let .Node(x, l, r): return .Node(f(x), l.map(f), r.map(f))
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue