Skip to content

Instantly share code, notes, and snippets.

@pancho508
Created November 24, 2019 02:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save pancho508/a4beda72b0789d2b2fd35e1c4fdce548 to your computer and use it in GitHub Desktop.
Save pancho508/a4beda72b0789d2b2fd35e1c4fdce548 to your computer and use it in GitHub Desktop.
More Alex & Pancho pair programming
// https://www.codewars.com/kata/5852d0d463adbd39670000a1/solutions/javascript
function goLeft(arr, n) {
let chunk = [];
if (n >= arr.length) {
return [arr];
}
let endIndex = arr.length - 1;
for (let i = n - 1; i >= 0; i--) {
chunk.push(arr[endIndex - i]);
}
let remainder = arr.slice(0, -n);
return goLeft(remainder, n * 2).concat([chunk]);
}
function goRight(arr, n) {
let chunk = [];
if (n >= arr.length) {
return [arr];
}
for (var i = 0; i < n; i++) {
chunk.push(arr[i]);
}
let remainder = arr.slice(i);
return [chunk].concat(goRight(remainder, n * 2));
}
function mirroredExponentialChunks(arr){
let chunked = [];
if (arr.length % 2 === 0) {
var n = 2;
var middle = arr.length / 2;
let before = [];
before.push(arr[middle-2]);
before.push(arr[middle-1]);
let after = [];
after.push(arr[middle]);
after.push(arr[middle+1]);
chunked.push(before, after);
var right = arr.slice(middle + 2);
var left = arr.slice(0, middle - 2);
} else {
var middle = Math.floor(arr.length / 2)
var n = 1;
chunked.push([arr[middle]]);
var right = arr.slice(middle + 1);
var left = arr.slice(0, middle);
}
chunked = goLeft(left, n * 2).concat(chunked).concat(goRight(right, n * 2));
return chunked;
}
arr = [1,2,3,4,5,6,7,8,9,10, 11, 12, 13, 14, 15, 16, 17]
mirroredExponentialChunks(arr)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment