GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
// Collects equal columns of a matrix and lists each with multiplicity12#include <stdlib.h>3#include <vector>4#include <list>5#include <map>67#include <sstream>8#include <fstream>9#include <iostream>10#include <algorithm>11using namespace std;121314vector<vector<int> > readMat(const string& project){15// reads one matrix from .in file1617string name_in=project;18const char* file_in=name_in.c_str();19ifstream in;20in.open(file_in,ifstream::in);21if (in.is_open()==false){22cerr << "Cannot find input file" << endl;23exit(1);24}2526int nrows,ncols;27in >> nrows;28in >> ncols;2930if(nrows==0 || ncols==0){31cerr << "Matrix empty" << endl;32exit(1);33}343536int i,j,entry;37vector<vector<int> > result(nrows);3839for(i=0;i<nrows;++i)40for(j=0;j<ncols;++j){41in >> entry;42result[i].push_back(entry);43}44return(result);45}4647int main(int argc, char* argv[])48{4950if(argc<2){51cerr << "No input file given" << endl;52exit(1);53}54string input_name=argv[1];55vector< vector<int > > M, MT;56M=readMat(input_name);57MT.resize(M[1].size());58for(size_t i=0;i<M.size();++i)59for(size_t j=0;j<MT.size();++j)60MT[j].push_back(M[i][j]);6162map< vector<int>, size_t > classes;63map< vector<int>, size_t >::iterator C;6465for(size_t j=0;j<MT.size();++j){66C=classes.find(MT[j]);67if(C!=classes.end())68C->second++;69else70classes.insert(pair<vector<int>, size_t>(MT[j],1));71}7273for(size_t i=0;i<M.size();++i){74for(C=classes.begin();C!=classes.end();++C)75cout << C->first[i] << " ";76cout << endl;77}78cout << "--------------" << endl;7980for(C=classes.begin();C!=classes.end();++C)81cout << C->second << " ";8283cout << endl << endl;8485return(0);86}878889