Skip to content

Commit bd51472

Browse files
author
programmiri
committed
Refactore solution to task matrix
1 parent 3173c55 commit bd51472

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

matrix/matrix.js

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,34 @@
11
export class Matrix {
22
constructor(string) {
3-
this.matrix = string;
4-
this.firstLineNumber = new RegExp(/^([0-9]+)/gm)
5-
this.leadingWhitespace = new RegExp(/^[ \t]+/gm)
3+
this._rows = this.splitInRows(string)
4+
this._columns = this.splitInColumns(string)
65
}
76

8-
splitInRows(stringMatrix) {
9-
return stringMatrix.split('\n').map( entry => entry.split(' ').map(entry => parseInt(entry, 10)))
7+
splitInRows(matrix) {
8+
return matrix.split('\n').map( entry => entry.split(' ').map(entry => parseInt(entry, 10)))
109
}
1110

12-
splitInColumns(stringMatrix) {
11+
splitInColumns(matrix) {
12+
const firstLineNumber = new RegExp(/^([0-9]+)/gm)
13+
const leadingWhitespace = new RegExp(/^[ \t]+/gm)
1314
const columns = []
1415

15-
let matrixToWorkOn = stringMatrix
16+
let matrixToWorkOn = matrix
17+
1618
while (matrixToWorkOn.trim().length) {
17-
const column = matrixToWorkOn.match(this.firstLineNumber).map(entry => parseInt(entry, 10))
19+
const column = matrixToWorkOn.match(firstLineNumber).map(entry => parseInt(entry, 10))
1820
columns.push([... column])
19-
matrixToWorkOn = matrixToWorkOn.replace(this.firstLineNumber, '').replace(this.leadingWhitespace, '')
21+
22+
matrixToWorkOn = matrixToWorkOn.replace(firstLineNumber, '').replace(leadingWhitespace, '')
2023
}
2124
return columns
2225
}
2326

2427
get rows() {
25-
return this.splitInRows(this.matrix)
28+
return this._rows
2629
}
2730

2831
get columns() {
29-
return this.splitInColumns(this.matrix)
32+
return this._columns
3033
}
3134
}

0 commit comments

Comments
 (0)