# isContiguous > Determine if an array is contiguous.
An array is **contiguous** if the memory address of each array element is adjacent to the memory address of the next array element.
## Usage ```javascript var isContiguous = require( '@stdlib/ndarray/base/assert/is-contiguous' ); ``` #### isContiguous( shape, strides, offset ) Returns a `boolean` indicating if an array is contiguous. ```javascript var shape = [ 2, 2 ]; var strides = [ 2, 1 ]; var offset = 25; var bool = isContiguous( shape, strides, offset ); // returns true shape = [ 10 ]; strides = [ 3 ]; // every third memory element offset = 0; bool = isContiguous( shape, strides, offset ); // returns false ```
## Examples ```javascript var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ); var shape2strides = require( '@stdlib/ndarray/base/shape2strides' ); var strides2offset = require( '@stdlib/ndarray/base/strides2offset' ); var randu = require( '@stdlib/random/base/randu' ); var isContiguous = require( '@stdlib/ndarray/base/assert/is-contiguous' ); var strides; var offset; var shape; var bool; var i; var j; shape = [ 0, 0, 0 ]; for ( i = 0; i < 100; i++ ) { // Generate a random array shape: shape[ 0 ] = discreteUniform( 1, 10 ); shape[ 1 ] = discreteUniform( 1, 10 ); shape[ 2 ] = discreteUniform( 1, 10 ); // Generate strides: if ( randu() < 0.5 ) { strides = shape2strides( shape, 'row-major' ); } else { strides = shape2strides( shape, 'column-major' ); } j = discreteUniform( 0, shape.length-1 ); strides[ j ] *= ( randu() < 0.5 ) ? -1 : 1; strides[ 0 ] *= discreteUniform( 1, 2 ); // if scaled by 1, then single segment // Compute the index offset: offset = strides2offset( shape, strides ) + 25; // include a view offset // Determine if the array is contiguous: bool = isContiguous( shape, strides, offset ); console.log( 'Shape: %s. Strides: %s. Offset: %d. Contiguous: %s.', shape.join( 'x' ), strides.join( ',' ), offset, bool ); } ```