@Override
    public ChessBoard[] reproduce(ChessBoard partner, int pivot) {

        int[] configurationChildren1 = new int[boardLength];
        int[] configurationChildren2 = new int[boardLength];

        for (int i = 0; i < boardLength; i++) {
            configurationChildren1[i] = (i < pivot) ? dna[i] : partner.dna[i];
            configurationChildren2[i] = (i < pivot) ? partner.dna[i] : dna[i];
        }

        ChessBoard[] chessBoards = new ChessBoard[2];
        chessBoards[0] = new ChessBoard(configurationChildren1);
        chessBoards[1] = new ChessBoard(configurationChildren2);

        return chessBoards;
    }