Advertisement
Guest User

Untitled

a guest
Sep 19th, 2017
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
IO 1.90 KB | None | 0 0
  1. # Task 1: fibonacci sequence recursive and as loop
  2.  
  3. Number fibRecursive := method(
  4.     if (self < 3, 1, (self-1) fibRecursive + (self-2) fibRecursive))
  5.  
  6. Number fibLoop := method(
  7.     a := 0; b := 1; c := 1;
  8.     for(counter, 2, self, c = a+b; a = b; b = c);
  9.     c)
  10.  
  11. 10 fibRecursive println
  12. 10 fibLoop println
  13.  
  14.  
  15.  
  16. # Task 2: change / to return 0 if the denominator is zero
  17.  
  18. Number unsafeDiv := Number getSlot("/")
  19. Number setSlot("/",
  20.        method(i,
  21.         if (0 == i, 0, unsafeDiv(i)))
  22.     )
  23.  
  24. (3 / 2) println
  25. (3 / 0) println
  26.  
  27.  
  28.  
  29. # Task 3: add up all numbers in a two-dimensional array
  30.  
  31. List sum2d := method(
  32.      map(sum) sum)
  33.  
  34. list(list(1, 2, 3), list(4, 5, 6), list(7, 8), list(9, 10, 11, 12)) sum2d println
  35.  
  36.  
  37.  
  38. # Task 4: calculate average of numbers in list, raise exception if not number
  39.  
  40. List myAverage := method(
  41.      s := 0;
  42.      for (counter, 0, size-1,
  43.      if (at(counter) type != Number type, Exception raise("NaN"));
  44.      s = s + at(counter));
  45.      s / size)
  46.  
  47. list(1, 2, 4) myAverage println
  48. # list(1, 2, "4") myAverage println
  49.  
  50.  
  51.  
  52. # Task 5: allocate a list of y lists that are x elements long
  53.  
  54. List2d := List clone
  55.  
  56. List2d dim := method(x, y,
  57.        l := List2d clone;
  58.        for(counter, 1, y, l append (List clone setSize(x)));
  59.        l)
  60.  
  61. List2d get := method(x, y,
  62.        at(y) at(x))
  63.  
  64. List2d set := method(x, y, value,
  65.        at(y) atPut(x, value))
  66.  
  67. test := List2d dim(2, 3)
  68. test set(0, 1, 2)
  69. test println
  70. test get(0, 1) println
  71.  
  72.  
  73.  
  74. # Task 6: transpose method for List2d
  75.  
  76. List2d transpose := method(
  77.        height := size; width := at(0) size;
  78.        l := dim(height, width);
  79.        for (x, 0, width-1, for (y, 0, height-1, l set(y, x, get(x, y))));
  80.        l)
  81.  
  82. new_matrix := test transpose
  83. new_matrix println
  84. (test get(0, 1) == new_matrix get(1, 0)) println
  85.  
  86.  
  87.  
  88. # Task 7: read/write matrix from/to file
  89.  
  90. File open("temp") write(test serialized)
  91. doFile("temp") println
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement