UNPKG

logan-maths-utils

Version:

A simple utility package with random number generator, palindrome checker, prime finder and more.

108 lines (92 loc) 2.13 kB
// Random number between min and max function randomNumber(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } // Find largest number function findLargest(arr) { return Math.max(...arr); } // Find smallest number function findSmallest(arr) { return Math.min(...arr); } // Sum of array function sumArray(arr) { return arr.reduce((a, b) => a + b, 0); } // Average of array function averageArray(arr) { return arr.length ? sumArray(arr) / arr.length : 0; } // Factorial function factorial(n) { if (n < 0) return null; return n <= 1 ? 1 : n * factorial(n - 1); } // Fibonacci (nth number) function fibonacci(n) { if (n < 0) return null; if (n <= 1) return n; let a = 0, b = 1; for (let i = 2; i <= n; i++) { [a, b] = [b, a + b]; } return b; } // Check palindrome (string/number) function isPalindrome(val) { const str = val.toString(); return str === str.split("").reverse().join(""); } // Prime check function isPrime(num) { if (num <= 1) return false; for (let i = 2; i * i <= num; i++) { if (num % i === 0) return false; } return true; } // Largest prime in array function largestPrime(arr) { const primes = arr.filter(isPrime); return primes.length ? Math.max(...primes) : null; } // GCD (Euclidean algorithm) function gcd(a, b) { while (b) [a, b] = [b, a % b]; return a; } // LCM function lcm(a, b) { return (a * b) / gcd(a, b); } // Reverse string function reverseString(str) { return str.split("").reverse().join(""); } // Count vowels function countVowels(str) { return (str.match(/[aeiou]/gi) || []).length; } // Check anagram function isAnagram(str1, str2) { const format = str => str.toLowerCase().replace(/[^a-z0-9]/g, "").split("").sort().join(""); return format(str1) === format(str2); } module.exports = { randomNumber, findLargest, findSmallest, sumArray, averageArray, factorial, fibonacci, isPalindrome, isPrime, largestPrime, gcd, lcm, reverseString, countVowels, isAnagram };