Playground
Algorithmic fun with JavaScript
Ransom Note
Given a magazine of words and a ransom note, determine if it's possible to “cut out” and create the ransom note from the magazine words. Enter the magazine as a list of words separated by spaces.
Sieve of Eratosthenes
For a given number, find all the prime numbers from zero to that number. Initial solutions might suffer from a time complexity worse than quadratic. Thankfully, Eratosthenes of Cyrene, the inventor of geography, also invented an efficient method for identifying prime numbers.
Fibonacci sequence
Return the Fibonacci sequence up to the desired depth.
TimeToType
A digit-only keyboard contains all 10 digits from 0 to 9. They all exist in one line. To type a digit, you start from index zero to the index of the target digit. It takes |a - b| milliseconds to move from index a to index b. Calculate the number of milliseconds needed to type a number with one finger.
Caesar Cipher
Given a phrase, substitute each character by shifting it up or down the alphabet by a given integer.
If necessary, the shifting should wrap around back to the beginning or end of the alphabet.
Euclidean Distance
Calculates the distance between two points in any number of dimensions. Uses Object.keys() to map each coordinate to its difference between the two points. Uses Math.hypot() to calculate the Euclidean distance between the two points.
Estimate remaining download time
A user is downloading a file which is X bytes in size. The system keeps a record of the amount (in bytes) B downloaded each minute. Calculate the remaining download time in minutes.
X - Filesize
B - Trend, listing the past bytes downloaded at each minute
Z - Last Z number of observations to be considered
Rotate Array k steps
[1, 2, 3, 4, 5] steps: 1 => [5, 1, 2, 3, 4]
[1, 2, 3, 4, 5] steps: 3 => [3, 4, 5, 1, 2]
Invert string - but only the letters
__aa**bb))cc => __cc**bb))aa
xxx-yyy&&zzz7qqq => qqq-zzz&&yyy7xxx
Number is prime
Checks if the provided integer is a prime number. By only checking numbers from 2 to the square root of the given number the complexity can be massively reduced (boundary). Returns false if any of them divides the given number, else return true, unless the number is less than 2.
Prime factors decomposition
Finds the prime factors of a given number using the trial division algorithm.
Trial division is the most laborious but easiest to understand of the integer factorization algorithms.
Factorial of Number
Calculates the factorial of a number using recursion.
Returns a notice if n is a negative number. Please don't crush the server ;-)
Classic FizzBuzz
Given a number as an input, print out every integer from 1 to that number. However, when the integer is divisible by 2, print out “Fizz”; when it's divisible by 3, print out “Buzz”; when it's divisible by both 2 and 3, print out “Fizz Buzz”.
The infamous baNaNa
Unconsidered JavaScript type casting results in hilarious results.
This example is a classic, but actually remastered from an even older original:
"foo" + +"bar" => 'fooNaN'