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
1
Task/Deepcopy/Lasso/deepcopy.lasso
Normal file
1
Task/Deepcopy/Lasso/deepcopy.lasso
Normal file
|
|
@ -0,0 +1 @@
|
|||
local(copy) = #myobject->ascopydeep
|
||||
19
Task/Deepcopy/Lingo/deepcopy-1.lingo
Normal file
19
Task/Deepcopy/Lingo/deepcopy-1.lingo
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
-- Supports lists, property lists, images, script instances and scalar values (integer, float, string, symbol).
|
||||
on deepcopy (var, cycleCheck)
|
||||
case ilk(var) of
|
||||
#list, #propList, #image:
|
||||
return var.duplicate()
|
||||
#instance:
|
||||
if string(var) starts "<Xtra " then return var -- deep copy makes no sense for Xtra instances
|
||||
if voidP(cycleCheck) then cycleCheck = [:]
|
||||
if not voidP(cycleCheck[var]) then return cycleCheck[var]
|
||||
copy = var.script.rawNew()
|
||||
cycleCheck[var] = copy
|
||||
repeat with i = 1 to var.count
|
||||
copy.setProp(var.getPropAt(i), deepcopy(var[i], cycleCheck))
|
||||
end repeat
|
||||
return copy
|
||||
otherwise:
|
||||
return var
|
||||
end case
|
||||
end
|
||||
8
Task/Deepcopy/Lingo/deepcopy-2.lingo
Normal file
8
Task/Deepcopy/Lingo/deepcopy-2.lingo
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
val = [#foo:42, "bar":[1,2,3, "Hello world!"]]
|
||||
put deepcopy(val)
|
||||
-- [#foo: 42, "bar": [1, 2, 3, "Hello world!"]]
|
||||
|
||||
val = script("MyClass").new()
|
||||
val.foo = 42
|
||||
val.bar = [1, 2, 3, "Hello world!"]]
|
||||
copy = deepcopy(val)
|
||||
1
Task/Deepcopy/Nim/deepcopy-1.nim
Normal file
1
Task/Deepcopy/Nim/deepcopy-1.nim
Normal file
|
|
@ -0,0 +1 @@
|
|||
deepCopy(newObj, obj)
|
||||
36
Task/Deepcopy/Nim/deepcopy-2.nim
Normal file
36
Task/Deepcopy/Nim/deepcopy-2.nim
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
import queues, sequtils
|
||||
|
||||
type
|
||||
Node[T] = ref TNode[T]
|
||||
TNode[T] = object
|
||||
data: T
|
||||
left, right: Node[T]
|
||||
|
||||
proc newNode[T](data: T; left, right: Node[T] = nil): Node[T] =
|
||||
Node[T](data: data, left: left, right: right)
|
||||
|
||||
proc preorder[T](n: Node[T]): seq[T] =
|
||||
if n == nil: @[]
|
||||
else: @[n.data] & preorder(n.left) & preorder(n.right)
|
||||
|
||||
var tree = 1.newNode(
|
||||
2.newNode(
|
||||
4.newNode(
|
||||
7.newNode),
|
||||
5.newNode),
|
||||
3.newNode(
|
||||
6.newNode(
|
||||
8.newNode,
|
||||
9.newNode)))
|
||||
|
||||
var tree2: Node[int]
|
||||
tree2.deepCopy tree
|
||||
tree2.data = 10
|
||||
tree2.left.data = 20
|
||||
tree2.right.left.data = 90
|
||||
|
||||
echo "Tree2:"
|
||||
echo preorder tree2
|
||||
|
||||
echo "Tree:"
|
||||
echo preorder tree
|
||||
15
Task/Deepcopy/Sidef/deepcopy.sidef
Normal file
15
Task/Deepcopy/Sidef/deepcopy.sidef
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
var src = Hash(foo => 0, bar => [0,1])
|
||||
|
||||
# Add a cyclic reference
|
||||
src{:baz} = src
|
||||
|
||||
# Make a deep clone
|
||||
var dst = src.dclone
|
||||
|
||||
# The address of src
|
||||
say src.object_id
|
||||
say src{:baz}.object_id
|
||||
|
||||
# The address of dst
|
||||
say dst.object_id
|
||||
say dst{:baz}.object_id
|
||||
Loading…
Add table
Add a link
Reference in a new issue