package util;

public class DeepCopyTwoD {
    private int[][] array;

    private DeepCopyTwoD(int[][] array) {
        this.array = array;
    }

    public static DeepCopyTwoD createEmpty() {
        return new DeepCopyTwoD(new int[0][0]);
    }

    public void setArray(int[][] newArray) {
        // Perform deep copy of the input array
       // displayArray();
        int[][] copiedArray = new int[newArray.length][];
        for (int i = 0; i < newArray.length; i++) {
            copiedArray[i] = new int[newArray[i].length];
            System.arraycopy(newArray[i], 0, copiedArray[i], 0, newArray[i].length);
        }
        
        this.array = copiedArray;
    }

    public int[][] getArray() {
        // Perform deep copy before returning the array
        //displayArray();
        int[][] copiedArray = new int[array.length][];
        for (int i = 0; i < array.length; i++) {
            copiedArray[i] = new int[array[i].length];
            System.arraycopy(array[i], 0, copiedArray[i], 0, array[i].length);
        }
        
        return copiedArray;
    }

    public void displayArray() {
        for (int[] row : array) {
            for (int value : row) {
                System.out.print(value + " ");
            }
            System.out.println();
        }
        System.out.println("-----------------------------------------");
    }
}
