class Matrix {

  public Collection<Integer> normalizeColumns() {
    final double[] columnSums = this.getColumnSums(Math::abs);
    final List<Integer> zeroColumns = new ArrayList<>();
    for (int i = 0; i < this.numCols; i++) {
      if (0 == columnSums[i]) {
        zeroColumns.add(i);
      }
    }

    this.forEach(
        (row, col, value, setter) -> {
          final double sum = columnSums[col];
          if (0 == sum) {
            return;
          }

          setter.accept(value / sum);
        });

    return zeroColumns;
  }

  protected  Matrix(final int numRows, final int numCols);

}