code: def force_categorical_determination(table: np.ndarray):
      """Find string columns using 'computationally expensive' approach"""
      categorical_ids = []
      non_categorical_ids = []
      # For every column in table make check
      for column_id, column in enumerate(table.T):
          # Check if column is of string objects
          if pd.api.types.infer_dtype(column, skipna=True) == "string":
              categorical_ids.append(column_id)
          else:
              non_categorical_ids.append(column_id)
  
      return categorical_ids, non_categorical_ids
  
file_path: FEDOT/fedot/core/data/data_preprocessing.py
imports: from typing import Optional, Tuple
  import numpy
  import pandas
  from fedot.core.data.data import InputData, data_type_is_multi_ts, data_type_is_table, data_type_is_ts
  from fedot.core.repository.dataset_types import DataTypesEnum
  from fedot.preprocessing.data_types import TYPE_TO_ID
label_desc: Use image node_id 7 for calling a global function with example usage: force_categorical_determination(table) and returns: categorical_ids,  non_categorical_ids