37 lines
563 B
Text
37 lines
563 B
Text
to slice :lst :start :finish
|
|
local "res
|
|
make "res []
|
|
for "i [:start :finish 1] [
|
|
make "j item :i :lst
|
|
make "res se :res :j
|
|
]
|
|
op :res
|
|
end
|
|
|
|
to setitem :n :lst :val
|
|
local "lhs
|
|
local "rhs
|
|
make "lhs slice :lst 1 :n-1
|
|
make "rhs slice :lst :n+1 count :lst
|
|
op (se :lhs :val :rhs)
|
|
end
|
|
|
|
to swap :i :j :a
|
|
local "t
|
|
make "t item :i :a
|
|
make "a setitem :i :a item :j :a
|
|
make "a setitem :j :a :t
|
|
op :a
|
|
end
|
|
|
|
to shuffle :a
|
|
for "i [count :a 2]
|
|
[
|
|
make "a swap 1 + random :i :i :a
|
|
]
|
|
op :a
|
|
end
|
|
|
|
make "a ( list 1 2 3 4 5 6 7 8 9 10 )
|
|
make "a shuffle :a
|
|
show :a
|