How to resolve the algorithm Ludic numbers step by step in the JavaScript programming language
How to resolve the algorithm Ludic numbers step by step in the JavaScript programming language
Table of Contents
Problem Statement
Ludic numbers are related to prime numbers as they are generated by a sieve quite like the Sieve of Eratosthenes is used to generate prime numbers. The first ludic number is 1. To generate succeeding ludic numbers create an array of increasing integers starting from 2. (Loop)
Show all triplets of ludic numbers < 250.
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Ludic numbers step by step in the JavaScript programming language
The provided Javascript code snippet is a simple implementation of the Ludic numbers sequence, which is a sequence of positive integers that starts with 1 and is defined by the following rule:
- The first element in the sequence is 1.
- The next element in the sequence is the smallest positive integer that is not already in the sequence and that has a number of distinct positive divisors that is greater than or equal to the previous element in the sequence.
The code snippet uses a helper function makeArr
to create an array filled with numbers between two given numbers, inclusive. It then uses another helper function filterAtInc
to remove every n-th element from an array. The main function makeLudic
uses these helper functions to generate the Ludic numbers sequence.
The code snippet then uses a few other helper functions to filter and process the Ludic numbers sequence, such as smallerThanN
to count the number of elements in an array that are smaller than a given number, and smallerThan1K
to count the number of Ludic numbers that are smaller than 1000.
Finally, the code snippet logs out some information about the Ludic numbers sequence, including the first 25 Ludic numbers, the total number of Ludic numbers that are smaller than 1000, and the 2000th to 2005th Ludic numbers. It also logs out all triplets of Ludic numbers that are smaller than 250.
Source code in the javascript programming language
/**
* Boilerplate to simply get an array filled between 2 numbers
* @param {!number} s Start here (inclusive)
* @param {!number} e End here (inclusive)
*/
const makeArr = (s, e) => new Array(e + 1 - s).fill(s).map((e, i) => e + i);
/**
* Remove every n-th element from the given array
* @param {!Array} arr
* @param {!number} n
* @return {!Array}
*/
const filterAtInc = (arr, n) => arr.filter((e, i) => (i + 1) % n);
/**
* Generate ludic numbers
* @param {!Array} arr
* @param {!Array} result
* @return {!Array}
*/
const makeLudic = (arr, result) => {
const iter = arr.shift();
result.push(iter);
return arr.length ? makeLudic(filterAtInc(arr, iter), result) : result;
};
/**
* Our Ludic numbers. This is a bit of a cheat, as we already know beforehand
* up to where our seed array needs to go in order to exactly get to the
* 2005th Ludic number.
* @type {!Array<!number>}
*/
const ludicResult = makeLudic(makeArr(2, 21512), [1]);
// Below is just logging out the results.
/**
* Given a number, return a function that takes an array, and return the
* count of all elements smaller than the given
* @param {!number} n
* @return {!Function}
*/
const smallerThanN = n => arr => {
return arr.reduce((p,c) => {
return c <= n ? p + 1 : p
}, 0)
};
const smallerThan1K = smallerThanN(1000);
console.log('\nFirst 25 Ludic Numbers:');
console.log(ludicResult.filter((e, i) => i < 25).join(', '));
console.log('\nTotal Ludic numbers smaller than 1000:');
console.log(smallerThan1K(ludicResult));
console.log('\nThe 2000th to 2005th ludic numbers:');
console.log(ludicResult.filter((e, i) => i > 1998).join(', '));
console.log('\nTriplets smaller than 250:');
ludicResult.forEach(e => {
if (e + 6 < 250 && ludicResult.indexOf(e + 2) > 0 && ludicResult.indexOf(e + 6) > 0) {
console.log([e, e + 2, e + 6].join(', '));
}
});
You may also check:How to resolve the algorithm Multisplit step by step in the M2000 Interpreter programming language
You may also check:How to resolve the algorithm Soundex step by step in the 360 Assembly programming language
You may also check:How to resolve the algorithm Priority queue step by step in the Julia programming language
You may also check:How to resolve the algorithm SHA-256 step by step in the AWK programming language
You may also check:How to resolve the algorithm Keyboard input/Keypress check step by step in the PowerShell programming language