Skip to content

Instantly share code, notes, and snippets.

@rbpinheiro
Created June 20, 2017 14:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rbpinheiro/3bb2790a7fc23411c94ded94f5d9518e to your computer and use it in GitHub Desktop.
Save rbpinheiro/3bb2790a7fc23411c94ded94f5d9518e to your computer and use it in GitHub Desktop.
Spiral number output
buildSpiral(5);
buildSpiral(4);
function buildSpiral(n) {
const arr = range(n).map(() => range(n));
const result = addLine(arr, range(n), range(n), 0);
result.forEach(r => {
console.log(
r
.map(i => ` ${i}`.slice(-2))
.join(' ')
)
});
console.log('-----------------------');
}
function range(n) {
return [...Array(n).keys()];
}
function addLine(arr, line, column, currentNumber) {
column.forEach(i => {
arr[line[0]][i] = ++currentNumber;
});
line.shift();
if (column.length) {
return addColumn(arr, line, column.reverse(), currentNumber);
}
return arr;
}
function addColumn(arr, line, column, currentNumber) {
line.forEach(i => {
arr[i][column[0]] = ++currentNumber;
});
column.shift();
if (line.length) {
return addLine(arr, line.reverse(), column, currentNumber);
}
return arr;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment