Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Task 1: fibonacci sequence recursive and as loop
- Number fibRecursive := method(
- if (self < 3, 1, (self-1) fibRecursive + (self-2) fibRecursive))
- Number fibLoop := method(
- a := 0; b := 1; c := 1;
- for(counter, 2, self, c = a+b; a = b; b = c);
- c)
- 10 fibRecursive println
- 10 fibLoop println
- # Task 2: change / to return 0 if the denominator is zero
- Number unsafeDiv := Number getSlot("/")
- Number setSlot("/",
- method(i,
- if (0 == i, 0, unsafeDiv(i)))
- )
- (3 / 2) println
- (3 / 0) println
- # Task 3: add up all numbers in a two-dimensional array
- List sum2d := method(
- map(sum) sum)
- list(list(1, 2, 3), list(4, 5, 6), list(7, 8), list(9, 10, 11, 12)) sum2d println
- # Task 4: calculate average of numbers in list, raise exception if not number
- List myAverage := method(
- s := 0;
- for (counter, 0, size-1,
- if (at(counter) type != Number type, Exception raise("NaN"));
- s = s + at(counter));
- s / size)
- list(1, 2, 4) myAverage println
- # list(1, 2, "4") myAverage println
- # Task 5: allocate a list of y lists that are x elements long
- List2d := List clone
- List2d dim := method(x, y,
- l := List2d clone;
- for(counter, 1, y, l append (List clone setSize(x)));
- l)
- List2d get := method(x, y,
- at(y) at(x))
- List2d set := method(x, y, value,
- at(y) atPut(x, value))
- test := List2d dim(2, 3)
- test set(0, 1, 2)
- test println
- test get(0, 1) println
- # Task 6: transpose method for List2d
- List2d transpose := method(
- height := size; width := at(0) size;
- l := dim(height, width);
- for (x, 0, width-1, for (y, 0, height-1, l set(y, x, get(x, y))));
- l)
- new_matrix := test transpose
- new_matrix println
- (test get(0, 1) == new_matrix get(1, 0)) println
- # Task 7: read/write matrix from/to file
- File open("temp") write(test serialized)
- doFile("temp") println
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement