This includes certificates (where it does nothing), but does not include any translations.
		
			
				
	
	
	
		
			4.8 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			4.8 KiB
		
	
	
	
	
	
	
	
id, title, challengeType, isHidden
| id | title | challengeType | isHidden | 
|---|---|---|---|
| 5ea281203167d2b0bdefca00 | Ludic numbers | 5 | false | 
Description
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 ...
(Loop)
- Take the first member of the resultant array as the next ludic number 2.
- Remove every 2nd indexed item from the array (including the first).
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 ...- (Unrolling a few loops...)
- Take the first member of the resultant array as the next ludic number 3.
- Remove every 3rd indexed item from the array (including the first).
3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 ...- Take the first member of the resultant array as the next ludic number 5.
- Remove every 5th indexed item from the array (including the first).
5 7 11 13 17 19 23 25 29 31 35 37 41 43 47 49 53 55 59 61 65 67 71 73 77 ...- Take the first member of the resultant array as the next ludic number 7.
- Remove every 7th indexed item from the array (including the first).
7 11 13 17 23 25 29 31 37 41 43 47 53 55 59 61 67 71 73 77 83 85 89 91 97 ...- ...
- Take the first member of the current array as the next ludic number L.
- Remove every Lth indexed item from the array (including the first).
- ...
Instructions
Tests
tests:
  - text: <code>ludic</code> should be a function.
    testString: assert(typeof ludic === 'function', '<code>ludic</code> should be a function.');
  - text: <code>ludic(2)</code> should return a array.
    testString: assert(Array.isArray(ludic(2)));
  - text: <code>ludic(2)</code> should return <code>[1, 2]</code>.
    testString: assert.deepEqual(ludic(2), [1, 2]);
  - text: <code>ludic(3)</code> should return <code>[1, 2, 3]</code>.
    testString: assert.deepEqual(ludic(3), [1, 2, 3]);
  - text: <code>ludic(5)</code> should return <code>[1, 2, 3, 5]</code>.
    testString: assert.deepEqual(ludic(5), [1, 2, 3, 5]);
  - text: <code>ludic(20)</code> should return <code>[1, 2, 3, 5, 7, 11, 13, 17]</code>.
    testString: assert.deepEqual(ludic(20), [1, 2, 3, 5, 7, 11, 13, 17]);
  - text: <code>ludic(26)</code> should return <code>[1, 2, 3, 5, 7, 11, 13, 17, 23, 25]</code>.
    testString: assert.deepEqual(ludic(26), [1, 2, 3, 5, 7, 11, 13, 17, 23, 25]);
Challenge Seed
function ludic(n) {
  
}
Solution
function ludic(n) {
  const makeArr = (s, e) => new Array(e + 1 - s).fill(s).map((e, i) => e + i);
  const filterAtInc = (arr, n) => arr.filter((e, i) => (i + 1) % n);
  const makeLudic = (arr, result) => {
    const iter = arr.shift();
    result.push(iter);
    return arr.length ? makeLudic(filterAtInc(arr, iter), result) : result;
  };
  const ludicResult = makeLudic(makeArr(2, n), [1]);
  return ludicResult;
}