master
Jason Staten 5 years ago
parent 43c291729c
commit 98cf709269

@ -0,0 +1,8 @@
# Change divide by 0 to be 0 instead of inf
Number div := Number getSlot("/")
Number / = method(den,
self println
if(den == 0, 0, div(den))
)
x := (5 / 0)
x println

@ -0,0 +1,13 @@
def fib(n)
if n <= 0 then 0
elsif n == 1 then 1
else fib(n-1) + fib(n-2)
end
end
puts fib(30)
# time of fib(30)
# real 0m0.166s
# user 0m0.148s
# sys 0m0.015s

@ -0,0 +1,18 @@
fib := method(n,
if(n <= 0) then(
return 0
) elseif(n == 1) then(
return 1
) else (
return fib(n-1) + fib(n-2)
)
)
fib(30) println
# time of fib(30)
# real 0m5.420s
# user 0m5.394s
# sys 0m0.020s

@ -0,0 +1,21 @@
fibLoop := method(n,
prev := 1;
result := 0;
while(n > 0,
n = n - 1;
temp := result
result = prev + result
prev = temp
)
result
)
fibLoop(30) println
# time of fibLoop(30)
# real 0m0.047s
# user 0m0.041s
# sys 0m0.004s

@ -0,0 +1,24 @@
Matrix := Object clone do(
store ::= nil
get := method(x, y,
store at(x) at(y)
)
set := method(x, y, value,
store at(x) atPut(y, value)
)
dim := method(x, y,
list setSize(x) map(list setSize(y))
Matrix clone setStore(
list setSize(x) map(list setSize(y))
)
)
)
m := Matrix dim(10, 7)
m set(3,4, 5)
m get(3,4) println
m get(3,0) println

@ -0,0 +1,8 @@
List myAvg := method(
if(isEmpty, 0, (self sum) / (self size))
)
list(0, 100) myAvg println # 50
list(100) myAvg println # 100
list() myAvg println # 0
list(1,2,"three") myAvg println # Error

@ -0,0 +1,8 @@
# Add all numbers in 2-dimensional array
numbers := list(
list(0,1,2,3,4),
list(5,6,7,8,9),
list(10,11,12,13,14)
)
numbers flatten sum println
Loading…
Cancel
Save