Examples - GoogleFeud/mafiascript GitHub Wiki

Fibonacci sequence

loop (faster)

let fibonacci = (n) => {
   if (!n) return 0;
   const arr = [0, 1];
   loop (let i=2, i <= n, i += 1) {
      arr[i] = arr[i - 1] + arr[i - 2];
   };
   return arr[n];
};

recursive (slower)

let fibonacci = (n) => {
   if (n < 1) return 0;
   if (n <= 2) return 1;
   return fibonacci(n - 1) + fibonacci(n - 2);
};

Fizzbuzz

let fizzbuzz = (n) => {
   loop (let i = 1, i <= n, i++) {
      if ((i % 3) == 0 && (i % 5) == 0) print("FizzBuzz")
      else if ((i % 3) == 0) print("Fizz")
      else if ((i % 5) == 0) print("Buzz")
      else print(i); 
   };
}; 

Merge sort

const merge = (arr1 = [], arr2 = []) => {
   const new = [];
   loop(arr1.size() && arr2.size()) {
      if (arr1[0] < arr2[0]) {
         new.push(arr1[0]);
         arr1.delete(0);
      } else {
         new.push(arr2[0]);
         arr2.delete(0);
      };
   };
   new.merge(arr1, arr2);
   return new;
};

const mergeSort = (arr = []) => {
   if (arr.size() < 2) return arr;
   const middle = (arr.size() / 2).floor();
   const arr1 = mergeSort(arr.slice(0, middle));
   const arr2 = mergeSort(arr.slice(middle, arr.size()));
   return merge(arr1, arr2);
};

Binary search

const binarySearch = (arr, value, start = 0, end = arr.size()) => {
   if (start > end) return false;
   const mid = ((start + end) / 2).floor();
   if (arr[mid] == value) return true;
   
   if (arr[mid] > value) return binarySearch(arr, value, start, mid - 1)
   else return binarySearch(arr, value, mid + 1, end);
};

Classes

const Person = (name, age) => {
   const _ = {
      "name": name,
      "age": age
   };

   _.isUnderage = |_|(minAge = 18) => {
      if (_.age > minAge) return false;
      return true;
   };

   return _;
};