File size: 5,835 Bytes
9e62486
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
{
    "addition": "const addition = (a, b) => a + b;",
    "subtraction": "const subtraction = (a, b) => a - b;",
    "multiplication": "const multiplication = (a, b) => a * b;",
    "division": "const division = (a, b) => a / b;",
    "factorial": "const factorial = n => n <= 0 ? 1 : n * factorial(n - 1);",
    "square": "const square = x => x * x;",
    "squareRoot": "const squareRoot = x => Math.sqrt(x);",
    "power": "const power = (x, y) => Math.pow(x, y);",
    "modulus": "const modulus = (a, b) => a % b;",
    "absolute": "const absolute = x => Math.abs(x);",
    "maximum": "const maximum = (a, b) => Math.max(a, b);",
    "minimum": "const minimum = (a, b) => Math.min(a, b);",
    "average": "const average = arr => arr.reduce((a, b) => a + b, 0) / arr.length;",
    "sum": "const sum = arr => arr.reduce((a, b) => a + b, 0);",
    "sortAscending": "const sortAscending = arr => arr.sort((a, b) => a - b);",
    "sortDescending": "const sortDescending = arr => arr.sort((a, b) => b - a);",
    "reverseString": "const reverseString = str => str.split('').reverse().join('');",
    "capitalize": "const capitalize = str => str.charAt(0).toUpperCase() + str.slice(1);",
    "isPalindrome": "const isPalindrome = str => str === str.split('').reverse().join('');",
    "fibonacci": "const fibonacci = n => n <= 1 ? n : fibonacci(n - 1) + fibonacci(n - 2);",
    "gcd": "const gcd = (a, b) => b === 0 ? a : gcd(b, a % b);",
    "lcm": "const lcm = (a, b) => (a * b) / gcd(a, b);",
    "factorize": "const factorize = n => Array.from({ length: n }, (_, i) => i + 1).filter(i => n % i === 0);",
    "isPrime": "const isPrime = n => n > 1 && Array.from({ length: Math.sqrt(n) }, (_, i) => i + 2).every(i => n % i !== 0);",
    "binarySearch": "const binarySearch = (arr, x) => {\n\tlet l = 0, h = arr.length - 1;\n\twhile (l <= h) {\n\t\tconst m = Math.floor((l + h) / 2);\n\t\tif (arr[m] === x) return m;\n\t\telse if (arr[m] < x) l = m + 1;\n\t\telse h = m - 1;\n\t}\n\treturn -1;\n};",
    "mergeSort": "const mergeSort = arr => {\n\tif (arr.length < 2) return arr;\n\tconst mid = Math.floor(arr.length / 2);\n\tconst left = mergeSort(arr.slice(0, mid));\n\tconst right = mergeSort(arr.slice(mid));\n\treturn merge(left, right);\n};",
    "quickSort": "const quickSort = arr => {\n\tif (arr.length < 2) return arr;\n\tconst pivot = arr[0];\n\tconst lesser = arr.slice(1).filter(el => el < pivot);\n\tconst greater = arr.slice(1).filter(el => el >= pivot);\n\treturn [...quickSort(lesser), pivot, ...quickSort(greater)];\n};",
    "merge": "const merge = (left, right) => {\n\tconst result = [];\n\tlet li = 0, ri = 0;\n\twhile (li < left.length && ri < right.length) {\n\t\tif (left[li] < right[ri]) result.push(left[li++]);\n\t\telse result.push(right[ri++]);\n\t}\n\treturn [...result, ...left.slice(li), ...right.slice(ri)];\n};",
    "linearSearch": "const linearSearch = (arr, x) => {\n\tfor (let i = 0; i < arr.length; i++) {\n\t\tif (arr[i] === x) return i;\n\t}\n\treturn -1;\n};",
    "bubbleSort": "const bubbleSort = arr => {\n\tfor (let i = 0; i < arr.length; i++) {\n\t\tfor (let j = 0; j < arr.length - i - 1; j++) {\n\t\t\tif (arr[j] > arr[j + 1]) {\n\t\t\t\tconst temp = arr[j];\n\t\t\t\tarr[j] = arr[j + 1];\n\t\t\t\tarr[j + 1] = temp;\n\t\t\t}\n\t\t}\n\t}\n\treturn arr;\n};",
    "factorialIterative": "const factorialIterative = n => {\n\tlet result = 1;\n\tfor (let i = 1; i <= n; i++) {\n\t\tresult *= i;\n\t}\n\treturn result;\n};",
    "nthRoot": "const nthRoot = (x, n) => Math.pow(x, 1 / n);",
    "logarithm": "const logarithm = (x, base = 10) => Math.log(x) / Math.log(base);",
    "exponential": "const exponential = x => Math.exp(x);",
    "sin": "const sin = x => Math.sin(x);",
    "cos": "const cos = x => Math.cos(x);",
    "tan": "const tan = x => Math.tan(x);",
    "asin": "const asin = x => Math.asin(x);",
    "acos": "const acos = x => Math.acos(x);",
    "atan": "const atan = x => Math.atan(x);",
    "randomInt": "const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;",
    "shuffleArray": "const shuffleArray = arr => {\n\tfor (let i = arr.length - 1; i > 0; i--) {\n\t\tconst j = Math.floor(Math.random() * (i + 1));\n\t\t[arr[i], arr[j]] = [arr[j], arr[i]];\n\t}\n\treturn arr;\n};",
    "debounce": "const debounce = (func, delay) => {\n\tlet timerId;\n\treturn function(...args) {\n\t\tclearTimeout(timerId);\n\t\ttimerId = setTimeout(() => func.apply(this, args), delay);\n\t};\n};",
    "throttle": "const throttle = (func, limit) => {\n\tlet lastFunc;\n\tlet lastRan;\n\treturn function(...args) {\n\t\tconst context = this;\n\t\tif (!lastRan) {\n\t\t\tfunc.apply(context, args);\n\t\t\tlastRan = Date.now();\n\t\t} else {\n\t\t\tclearTimeout(lastFunc);\n\t\t\tlastFunc = setTimeout(() => {\n\t\t\t\tif ((Date.now() - lastRan) >= limit) {\n\t\t\t\t\tfunc.apply(context, args);\n\t\t\t\t\tlastRan = Date.now();\n\t\t\t\t}\n\t\t\t}, limit - (Date.now() - lastRan));\n\t\t}\n\t};\n};",
    "cloneDeep": "const cloneDeep = obj => JSON.parse(JSON.stringify(obj));",
    "deepEqual": "const deepEqual = (a, b) => {\n\tif (a === b) return true;\n\tif (typeof a === 'object' && typeof b === 'object' && a != null && b != null) {\n\t\tconst keysA = Object.keys(a);\n\t\tconst keysB = Object.keys(b);\n\t\tif (keysA.length !== keysB.length) return false;\n\t\tfor (const key of keysA) {\n\t\t\tif (!keysB.includes(key) || !deepEqual(a[key], b[key])) return false;\n\t\t}\n\t\treturn true;\n\t}\n\treturn false;\n};",
    "flattenArray": "const flattenArray = arr => arr.reduce((flat, toFlatten) => flat.concat(Array.isArray(toFlatten) ? flattenArray(toFlatten) : toFlatten), []);",
    "uniqueElements": "const uniqueElements = arr => [...new Set(arr)];",
    "intersection": "const intersection = (arr1, arr2) => arr1.filter(x => arr2.includes(x));"
}