@Override
  public String[] draw() {
    Piece[][] pieces = solver.getSolution();
    String[] finalBoard = new String[pieces.length];
    char[][] board = new char[pieces.length][pieces[0].length];
    for (int i = 0; i < pieces.length; i++) {
      for (int j = 0; j < pieces[i].length; j++) {
        Piece piece = pieces[i][j];
        if (piece == null) {
          board[i][j] = '?';
        } else {
          switch (piece.getPieceType()) {
            case CORNER:
              board[i][j] = 'C';
              break;
            case EDGE:
              board[i][j] = 'E';
              break;
            case ALL_IN:
              board[i][j] = 'X';
              break;
            case ALL_OUT:
              board[i][j] = 'O';
              break;
            case THREE_IN:
              board[i][j] = 'K';
              break;
            case THREE_OUT:
              board[i][j] = '3';
              break;
            case OPPOSITES:
              board[i][j] = 'O';
              break;
            case ADJACENTS:
              board[i][j] = 'A';
          }
        }
      }
    }
    for (int i = 0; i < board.length; i++) {
      finalBoard[i] = new String(board[i]);
    }

    return finalBoard;
  }