1.0.9 ā¢ Published 4 years ago
spiral-array v1.0.9
Traverse a 2d array from the centre in a spiral
(+ other useful functions)
š Displaying the data
const array = generateArray(3);
printArrayTable(array)
Traversing 9 cells
āāāāāāāāāāā¬āāāā¬āāāā¬āāāā
ā (index) ā 0 ā 1 ā 2 ā
āāāāāāāāāāā¼āāāā¼āāāā¼āāāā¤
ā 0 ā 1 ā 2 ā 3 ā
ā 1 ā 4 ā 5 ā 6 ā
ā 2 ā 7 ā 8 ā 9 ā
āāāāāāāāāāā“āāāā“āāāā“āāāā
šÆ Finding the centre of an array
const centre = locateCentre(array)
centre { contents: 5, coordinates: [ 1, 1 ] }
š§ Traversing the array
const results = spiral(array);
results {
contents: [
5, 6, 3, 2, 1,
4, 7, 8, 9
],
coordinates: [
[ 1, 1 ], [ 1, 2 ],
[ 0, 2 ], [ 0, 1 ],
[ 0, 0 ], [ 1, 0 ],
[ 2, 0 ], [ 2, 1 ],
[ 2, 2 ]
]
}
š Find the next cell
const cell = nextCell(array, [0,2], 'l');
cell {
contents: [2],
coordinates: [ [ 0, 1 ] ]
}
š» API
type
There are two types of response that can be returned from some functions.
- Contents of the cell
- Coordinates of the cell
If type
is not specified, both contents
and coordinates
will be returned.
You can import these functions into your project:
module.exports = {
spiral: (array, type) => traverseArray(array, type),
generateArray: (size) => generateArray(size),
printArrayTable: (array) => console.table(array),
locateCentre: (array, type) => locateCentre(array, type),
nextCell: (array, currentCell, direction, type) => nextCell(array, currentCell, direction, type)
};
ā¹ļø Help
Node.js heap out of memory
When dealing with very large arrays (around 1000 x 1000 or higher) more memory can be allocated to your node process. See: https://stackoverflow.com/questions/38558989/node-js-heap-out-of-memory