2.8.0 • Published 8 years ago

matrix-slicer v2.8.0

Weekly downloads
1
License
MIT
Repository
github
Last release
8 years ago

matrix-slicer

Bower version npm version devDependency Status Travis Build Status Appveyor Build Status Coverage Status

JavaScript utility for slicing a matrix into elements, columns, rows, diagonals and submatrices.

  1. Installation
  2. Usage
  3. Methods
  4. Test
  5. License

Installation

Npm

$ npm install matrix-slicer --save

Yarn

$ yarn add matrix-slicer

Bower

$ bower install matrix-slicer --save

Usage

Javascript

Install Bower package or just put the script in your project.

<script src="/lib/matrix-slicer/index.js"></script>
<!-- In case of Bower: <script src="/bower_components/matrix-slicer/index.js"></script> -->
<script>
    var m = new Matrix([
        [1, 2],
        [3, 4],
    ]);
</script>

AMD

Install Bower package or just put the script in your project.

require([
    'matrix-slicer',
], function (Matrix) {
    var m = new Matrix([
        [1, 2],
        [3, 4],
    ]);
});

CommonJS

Install npm package and use it.

var Matrix = require('matrix-slicer');

var m = new Matrix([
    [1, 2],
    [3, 4],
]);

ES6

Install npm package and use it.

import Matrix from 'matrix-slicer';

const m = new Matrix([
    [1, 2],
    [3, 4],
]);

Methods

1. Creating instance of the Matrix

Syntax

new Matrix(matrix | width, height, element = 0 | callback)

Where:

  • matrix - regular matrix (an array of arrays with similar lengths);
  • width - number of columns;
  • height - number of rows;
  • element - an element with which the matrix will be filled. By default, this is 0;
  • callback - function that produces an element of the matrix, taking three arguments:
  • i - index (zero-based) of the column of generated the element;
  • j - index (zero-based) of the row of generated the element;
  • m - the width of generated matrix was passed earlier;
  • n - the height of generated matrix was passed earlier;
  • matrix - the matrix with previously generated elements.

Example

// Regular matrix
const m = new Matrix([
    ['bird', 'dog'],
    ['cat', 'elephant'],
]); // => instance of matrix [['bird', 'dog'], ['cat', 'elephant']]

// By dimensions
const m = new Matrix(3, 2); // => instance of matrix [[0, 0, 0], [0, 0, 0]]

// By dimensions and filler
const m = new Matrix(2, 2, 'Foo'); // => instance of matrix [['Foo', 'Foo'], ['Foo', 'Foo']]

// By dimensions and callback function to generate elements
const m = new Matrix(2, 2, function (i, j, m, n, matrix) {
    return i + j;
}); // => instance of matrix [[0, 1], [1, 2]]

2. Get Matrix

Syntax

m.get()

Example

m.get(); // => [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]

3. Get Element(s)

Syntax

m.getElem(x, y)

Where:

  • x - index (zero-based) of the column. If it is negative, the coordinate calculated from the end (width + x).
  • y - index (zero-based) of the row. If it is negative, the coordinate calculated from the end (height + y).

m.getElems(fromX, fromY, toX = \<width>, toY = \<height>)

Where:

  • fromX - index (zero-based) of the column of start element. If it is negative, the coordinate calculated from the end (width + fromX).
  • fromY - index (zero-based) of the row of start element. If it is negative, the coordinate calculated from the end (height + fromY).
  • toX - index (zero-based) of the column till which extraction will be going. If it is negative, the coordinate calculated from the end (width + toX).
  • toY - index (zero-based) of the row till which extraction will be going. If it is negative, the coordinate calculated from the end (height + toY).

Example

// Get an Element by coordinates (zero-based)
m.getElem(0, 1); // => 'D'

// Get a set of Elements
m.getElems(1, 0, 2, 1); // => ['B', 'C', 'D', 'E', 'F']

4. Get Row(s)

Syntax

m.getRow(y)

Where:

  • y - index (zero-based) of the row. If it is negative, the coordinate calculated from the end (height + y).

m.getRows(fromY, toY = \<height>)

Where:

  • fromY - index (zero-based) of the start row. If it is negative, the coordinate calculated from the end (height + fromY).
  • toY - index (zero-based) of the row till which extraction will be going. If it is negative, the coordinate calculated from the end (height + toY).

Example

// Get a Row by index (zero-based)
m.getRow(1); // => ['D', 'E', 'F']

// Get a set of Rows
m.getRows(0, 2); // => [['A', 'B', 'C'], ['D', 'E', 'F']]

5. Get Column(s)

Syntax

m.getColumn(x)

Where:

  • x - index (zero-based) of the column. If it is negative, the coordinate calculated from the end (width + x).

m.getColumns(fromX, toX = \<width>)

Where:

  • fromX - index (zero-based) of the start column. If it is negative, the coordinate calculated from the end (width + fromX).
  • toX - index (zero-based) of the column till which extraction will be going. If it is negative, the coordinate calculated from the end (width + toX).

Example

// Get a Column by index (zero-based)
m.getColumn(2); // => ['C', 'F', 'I']

// Get a set of Columns
m.getColumns(1, 3); // => [['B', 'E', 'H'], ['C', 'F', 'I']]

6. Get Major Diagonal(s)

Syntax

m.getDiagonalMaj(index)

Where:

  • index - index (zero-based) of the diagonal. If it is negative, the coordinate calculated from the end (diagonals_amount + index).

m.getDiagonalsMaj(fromIndex, toIndex = \<diagonals_ammount>)

Where:

  • fromIndex - index (zero-based) of the start major diagonal. If it is negative, the value calculated from the end (diagonals_amount + fromIndex).
  • toIndex - index (zero-based) of the major diagonal till which extraction will be going. If it is negative, the value calculated from the end (diagonals_amount + toIndex).

Example

// Get a major Diagonal by index (zero-based)
m.getDiagonalMaj(1); // => ['B', 'F']

// Get a set of major Diagonals
m.getDiagonalsMaj(2, 4); // => [['A', 'E', 'I'], ['D', 'H']]

7. Get Minor Diagonal(s)

Syntax

m.getDiagonalMin(index)

Where:

  • index - index (zero-based) of the diagonal. If it is negative, the coordinate calculated from the end (diagonals_amount + index).

m.getDiagonalsMin(fromIndex, toIndex = \<diagonals_ammount>)

Where:

  • fromIndex - index (zero-based) of the start minor diagonal. If it is negative, the value calculated from the end (diagonals_amount + fromIndex).
  • toIndex - index (zero-based) of the minor diagonal till which extraction will be going. If it is negative, the value calculated from the end (diagonals_amount + toIndex).

Example

// Get a minor Diagonal by index (zero-based)
m.getDiagonalMin(4); // => ['I']

// Get a set of major Diagonals
m.getDiagonalsMin(-3, -1); // => [['B', 'D'], ['C', 'E', 'G']]

8. Get Submatrix

Syntax

m.getSubmatrix(fromX, fromY, toX = \<width>, toY = \<height>)

Where:

  • fromX - index (zero-based) of the column of start element. If it is negative, the coordinate calculated from the end (width + fromX).
  • fromY - index (zero-based) of the row of start element. If it is negative, the coordinate calculated from the end (height + fromY).
  • toX - index (zero-based) of the column till which extraction will be going. If it is negative, the coordinate calculated from the end (width + toX).
  • toY - index (zero-based) of the row till which extraction will be going. If it is negative, the coordinate calculated from the end (height + toY).

Example

// Get a Submatrix
m.getSubmatrix(1, 1, 3, 3); // => [['E', 'F'], ['H', 'I']]

For more details see description of tests.

Test

$ git clone https://github.com/ahtohbi4/matrix-slicer.git
$ cd matrix-slicer
$ npm install
$ npm test

License

MIT © Alexander Antonov alexandr-post@yandex.ru

2.8.0

8 years ago

2.7.2

8 years ago

2.7.1

8 years ago

2.7.0

9 years ago

2.6.4

9 years ago

2.6.3

9 years ago

2.6.2

9 years ago

2.6.1

9 years ago

2.6.0

9 years ago

2.4.0

10 years ago

2.3.0

10 years ago

2.2.0

10 years ago

2.1.0

10 years ago

2.0.0

10 years ago

1.4.0

10 years ago

1.3.2

10 years ago

1.3.1

10 years ago

1.3.0

10 years ago

1.2.1

10 years ago

1.2.0

10 years ago

1.1.1

10 years ago

1.1.0

10 years ago

1.0.0

10 years ago