#ifndef MTRXGAUD_H #define MTRXGAUD_H #include #include /*---Matrix--- *Abstract type that describe a boolean matrix * *@colCount : the number of columns of the matrix *@rowIndex : the number of rows of the matrix * *@rows : pointer on the first row that contains a true value *@cols : pointer on the first col that contains a true value * */ typedef struct Matrix { int colCount; int rowCount; List *cols; List *rows; }Matrix; /*---applyRules--- *A function tha allows you to apply some rules n times on the matrix and returns it * *@matrix : A matrix on whitch you would apply the rules * *@Rules : Integer describing the rules * *@N : number of time the rules will be applied * */ Matrix applyRules(Matrix matrix,int Rules, int N); /** *Create a void Matrix * *@return a matrix * */ Matrix CreateMatrix(); /** *Find and return the cell in the given matrix * *@param matrix the Matrix where we search *@param ColPos an int indicating the column of the cell *@param RowPos an int indicating the row of the cell * *@return a cellElement * */ cellElement * FindMatrixElem(Matrix matrix, int ColPos, int RowPos); /** *Create the cell in the given matrix * *@param matrix the Matrix *@param ColPos an int indicating the column of the cell *@param RowPos an int indicating the row of the cell * *@return a bool (error code) * */ bool CreateMatrixElem(Matrix matrix, int ColPos, int RowPos); /** *Delete the cell in the given matrix * *@param matrix the Matrix *@param ColPos an int indicating the column of the cell *@param RowPos an int indicating the row of the cell * *@return an error code (int) * */ int SupprMatrixElem(Matrix matrix, int ColPos, int RowPos); /** *Delete or create the cell in the given matrix to fit the value * *@param matrix the Matrix *@param ColPos an int indicating the column of the cell *@param RowPos an int indicating the row of the cell * *@return an error code (bool) * */ bool SetCellValue(Matrix matrix, int ColPos, int RowPos, bool value); /** *Checks out the value of the cell in the given matrix * *@param matrix the Matrix *@param ColPos an int indicating the column of the cell *@param RowPos an int indicating the row of the cell * *@return the value (bool) * */ bool GetCellValue(Matrix matrix, int ColPos, int RowPos); /** *Set the number of columns and rows of the matrix and returns it * *@param matrix the Matrix *@param nbCols an int indicating the number of columns *@param nbRows an int indicating the number of rows * *@return the matrix * */ Matrix SetMatrixDim(Matrix matrix,int nbCols,int nbRows); /** *Basically print the Matrix in the standard output * *@param matrix the Matrix * *@return void * */ void BasicPrintMatrix(Matrix matrix); bool RecursiveFreeCol(Matrix matrix, cellElement * elem); Matrix freeMatrix(Matrix matrix); /** * Given an input matrix with M rows and N columns, computes a matrix with * M rows and N-1 columns were each element corresponds to the operator boolean operation * between two successive horizontal elements in the input matrix * @param m a Matrix * @param operator a function * @return matrix the copmuted matrix */ Matrix colSequenceOnMatrix(Matrix m, bool (operator)(bool, bool)); /** * Given an input matrix with M rows and N columns, computes a matrix with * M-1 rows and N columns were each element corresponds to the operator boolean operation * between two succesive vertical elements in the input matrix * @param m a Matrix * @param operator a function * @return matrix the copmuted matrix */ Matrix rowSequenceOnMatrix(Matrix m, bool (operator)(bool, bool)); /** * Given an input matrix with M rows and N columns, computes a matrix with * M rows and N-1 columns were each element corresponds to the AND boolean operation * between two successive horizontal elements in the input matrix * @param m a Matrix * @return matrix the copmuted matrix */ Matrix andColSequenceOnMatrix(Matrix m); /** * Given an input matrix with M rows and N columns, computes a matrix with * M rows and N-1 columns were each element corresponds to the OR boolean operation * between two successive horizontal elements in the input matrix * @param m a Matrix * @return matrix the copmuted matrix */ Matrix orColSequenceOnMatrix(Matrix m); /** * Given an input matrix with M rows and N columns, computes a matrix with * M-1 rows and N columns were each element corresponds to the AND boolean operation * between two succesive vertical elements in the input matrix * @param m a Matrix * @return matrix the copmuted matrix */ Matrix andRowSequenceOnMatrix(Matrix m); /** * Given an input matrix with M rows and N columns, computes a matrix with * M-1 rows and N columns were each element corresponds to the OR boolean operation * between two succesive vertical elements in the input matrix * @param m a Matrix * @return matrix the copmuted matrix */ Matrix orRowSequenceOnMatrix(Matrix m); Matrix sumMatrix(Matrix matrix1,Matrix matrix2); #endif