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 _;
};