From 98cf70926993ae89ba1baec4702ed5cf8246e05f Mon Sep 17 00:00:00 2001 From: Jason Staten Date: Sun, 13 Oct 2019 22:15:36 -0600 Subject: [PATCH] io day 2 --- io/divbyzero.io | 8 ++++++++ io/fib.rb | 13 +++++++++++++ io/fibonacci.io | 18 ++++++++++++++++++ io/fibonacciLoop.io | 21 +++++++++++++++++++++ io/matrix.io | 24 ++++++++++++++++++++++++ io/myAvg.io | 8 ++++++++ io/twodim.io | 8 ++++++++ 7 files changed, 100 insertions(+) create mode 100644 io/divbyzero.io create mode 100644 io/fib.rb create mode 100644 io/fibonacci.io create mode 100644 io/fibonacciLoop.io create mode 100644 io/matrix.io create mode 100644 io/myAvg.io create mode 100644 io/twodim.io diff --git a/io/divbyzero.io b/io/divbyzero.io new file mode 100644 index 0000000..2990078 --- /dev/null +++ b/io/divbyzero.io @@ -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 diff --git a/io/fib.rb b/io/fib.rb new file mode 100644 index 0000000..6e42856 --- /dev/null +++ b/io/fib.rb @@ -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 diff --git a/io/fibonacci.io b/io/fibonacci.io new file mode 100644 index 0000000..0386c51 --- /dev/null +++ b/io/fibonacci.io @@ -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 + + diff --git a/io/fibonacciLoop.io b/io/fibonacciLoop.io new file mode 100644 index 0000000..024e1a8 --- /dev/null +++ b/io/fibonacciLoop.io @@ -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 + + diff --git a/io/matrix.io b/io/matrix.io new file mode 100644 index 0000000..ef18cc8 --- /dev/null +++ b/io/matrix.io @@ -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 + diff --git a/io/myAvg.io b/io/myAvg.io new file mode 100644 index 0000000..0671631 --- /dev/null +++ b/io/myAvg.io @@ -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 diff --git a/io/twodim.io b/io/twodim.io new file mode 100644 index 0000000..b6f142e --- /dev/null +++ b/io/twodim.io @@ -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