|
package com; |
|
|
|
import java.util.ArrayList; |
|
import java.util.Arrays; |
|
import java.util.List; |
|
|
|
public class Reshaper { |
|
|
|
public int getRowsNumber(int[][] matrix) { |
|
return matrix.length; |
|
} |
|
|
|
public int getColumnsNumber(int[][] matrix) { |
|
return matrix[0].length; |
|
} |
|
|
|
public int getLength(int[][] matrix) { |
|
return getRowsNumber(matrix) * getColumnsNumber(matrix); |
|
} |
|
|
|
public int[] getReshapedMatrix(int[][] matrix) { |
|
List<Integer> reshapedMatrix = new ArrayList<>(); |
|
for (int i = 0; i < matrix.length; i++) { |
|
Arrays.stream(matrix[i]).forEach(e -> reshapedMatrix.add(e)); |
|
} |
|
return reshapedMatrix.stream().mapToInt(Integer::intValue).toArray(); |
|
} |
|
|
|
public int upperLineCelle(int[][] matrix, int index) { |
|
return index < getRowsNumber(matrix) ? null : getReshapedMatrix(matrix)[index - getRowsNumber(matrix)]; |
|
} |
|
|
|
public int lowerLineCelle(int[][] matrix, int index) { |
|
return index > getColumnsNumber(matrix) * getRowsNumber(matrix) ? null |
|
: getReshapedMatrix(matrix)[index + getRowsNumber(matrix)]; |
|
} |
|
|
|
public int leftSideCelle(int[][] matrix, int index) { |
|
return index % getColumnsNumber(matrix) == 0 ? null : getReshapedMatrix(matrix)[index - 1]; |
|
} |
|
|
|
public int rightSideCelle(int[][] matrix, int index) { |
|
return index % getColumnsNumber(matrix) == getColumnsNumber(matrix) - 1 ? null |
|
: getReshapedMatrix(matrix)[index + 1]; |
|
} |
|
|
|
public int upperRightCelle(int[][] matrix, int index) { |
|
return index < getRowsNumber(matrix) && index % getColumnsNumber(matrix) == getColumnsNumber(matrix) - 1 ? null |
|
: getReshapedMatrix(matrix)[index - getRowsNumber(matrix) + 1]; |
|
} |
|
|
|
public int upperLeftCelle(int[][] matrix, int index) { |
|
return index < getRowsNumber(matrix) && index % getColumnsNumber(matrix) == 0 ? null |
|
: getReshapedMatrix(matrix)[index - getRowsNumber(matrix) - 1]; |
|
} |
|
|
|
public int lowerRightCelle(int[][] matrix, int index) { |
|
return index > getColumnsNumber(matrix) * getRowsNumber(matrix) |
|
&& index % getColumnsNumber(matrix) == getColumnsNumber(matrix) - 1 ? null |
|
: getReshapedMatrix(matrix)[index + getRowsNumber(matrix) + 1]; |
|
} |
|
|
|
public int LowerLeftCelle(int[][] matrix, int index) { |
|
return index > getColumnsNumber(matrix) * getRowsNumber(matrix) && index % getColumnsNumber(matrix) == 0 ? null |
|
: getReshapedMatrix(matrix)[index + getRowsNumber(matrix) - 1]; |
|
} |
|
} |