mirror of
https://gitlab.com/klmp200/LO27.git
synced 2024-12-22 23:01:08 +00:00
Merge branch 'NaejBranch' into 'master'
fini la doc See merge request !23
This commit is contained in:
commit
3bcd663762
@ -22,9 +22,13 @@
|
|||||||
#define CELLELMNT_H
|
#define CELLELMNT_H
|
||||||
|
|
||||||
|
|
||||||
/*---bool---
|
/**
|
||||||
*@true : 1
|
* An essential basic type, added an ERROR for out of bounds
|
||||||
*@false : 0
|
*
|
||||||
|
* @param true : 1
|
||||||
|
* @param false : 0
|
||||||
|
* @param ERROR : -1
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
typedef enum Bool{
|
typedef enum Bool{
|
||||||
|
|
||||||
@ -35,17 +39,16 @@ typedef enum Bool{
|
|||||||
} bool;
|
} bool;
|
||||||
|
|
||||||
|
|
||||||
/*---cellElement---
|
/**
|
||||||
*A cell of the matrix
|
* A cell of the matrix
|
||||||
*
|
*
|
||||||
*@colIndex : index (int) of the column of this cell
|
* @param colIndex is index (int) of the column of this cell
|
||||||
*@rowIndex : index (int) of the row of this cell
|
* @param rowIndex is index (int) of the row of this cell
|
||||||
*
|
*
|
||||||
*@value : a boolean that is the content of the cell
|
* @param nextCol is pointer on the next cellElement in the same column
|
||||||
*
|
* @param nextRow is pointer on the next cellElement in the same row
|
||||||
*@nextCol : pointer on the next cellElement in the same column
|
|
||||||
*@nextRow : pointer on the next cellElement in the same row
|
|
||||||
*
|
*
|
||||||
|
* @see CreateCellElem to allocate one and FreeCellElement to free one
|
||||||
*/
|
*/
|
||||||
struct cellElement {
|
struct cellElement {
|
||||||
|
|
||||||
@ -58,140 +61,155 @@ struct cellElement {
|
|||||||
};
|
};
|
||||||
typedef struct cellElement cellElement;
|
typedef struct cellElement cellElement;
|
||||||
|
|
||||||
/*---CreateCellElem---
|
/**
|
||||||
*Allocates a cellElement and returns it
|
* Allocates a cellElement and returns it
|
||||||
*
|
*
|
||||||
*@return : pointer on the allocated cellElement
|
* @return pointer on the allocated cellElement
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
cellElement * CreateCellElem();
|
cellElement * CreateCellElem();
|
||||||
|
|
||||||
|
|
||||||
/*---AddNextCol---
|
/**
|
||||||
*Allocates a cellElement and sets it as the NextCol of the tree
|
* Allocates a cellElement and sets it as the NextCol of the tree
|
||||||
*
|
*
|
||||||
*@tree : pointer on an allocated cellElement
|
* @param tree is a pointer on an allocated cellElement
|
||||||
*
|
*
|
||||||
*@return ; error codes
|
* @return int error codes
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
int AddNextCol(cellElement* tree);
|
int AddNextCol(cellElement* tree);
|
||||||
|
|
||||||
|
|
||||||
/*---AddNextRow---
|
/**
|
||||||
*Allocates a cellElement and sets it as the NextRow of the tree
|
* Allocates a cellElement and sets it as the NextRow of the tree
|
||||||
*
|
*
|
||||||
*@tree : a pointer on an allocated cellElement
|
* @param tree is a pointer on an allocated cellElement
|
||||||
*
|
*
|
||||||
*@return : error codes
|
* @return int error codes
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
int AddNextRow(cellElement* tree);
|
int AddNextRow(cellElement* tree);
|
||||||
|
|
||||||
/*---removeNextCol---
|
/**
|
||||||
*Free the nextCol cellElement of the tree
|
* Free the nextCol cellElement of the tree
|
||||||
*
|
*
|
||||||
*@tree : a pointer on an allocated cellElement
|
* @param tree is a pointer on an allocated cellElement
|
||||||
|
* @return void
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void removeNextCol(cellElement* tree);
|
void removeNextCol(cellElement* tree);
|
||||||
|
|
||||||
/*---removeNextRow---
|
/**
|
||||||
*Free the nextRow cellElement of the tree
|
* Free the nextRow cellElement of the tree
|
||||||
*
|
*
|
||||||
*@tree : a pointer on an allocated cellElement
|
* @param tree is a pointer on an allocated cellElement
|
||||||
|
* @return void
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void removeNextRow(cellElement* tree);
|
void removeNextRow(cellElement* tree);
|
||||||
|
|
||||||
|
|
||||||
/*---FreeCellElem---
|
/**
|
||||||
*Frees a cellElement and returns it
|
* Frees a cellElement and returns it
|
||||||
*
|
|
||||||
*@element : pointer on the allocated cellElement
|
|
||||||
*
|
*
|
||||||
|
* @param element is pointer on the allocated cellElement
|
||||||
|
* @return void
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
void FreeCellElement(cellElement* element);
|
void FreeCellElement(cellElement* element);
|
||||||
|
|
||||||
|
|
||||||
/*---is_leaf---
|
/**
|
||||||
*Checks is the tree is a leaf
|
* Checks is the tree is a leaf
|
||||||
*
|
*
|
||||||
*@tree : a pointer on an allocated cellElement
|
* @param tree is a pointer on an allocated cellElement
|
||||||
*
|
*
|
||||||
*@return : a bool
|
* @return a bool (true/false)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
bool is_leaf(cellElement* tree);
|
bool is_leaf(cellElement* tree);
|
||||||
|
|
||||||
|
|
||||||
/*---SetPositionIndex---
|
/**
|
||||||
*Allows you to set the colIndex and the rowIndex of the cellElement elem
|
* Allows you to set the colIndex and the rowIndex of the cellElement elem
|
||||||
*
|
*
|
||||||
*@elem : a pointer on an allocated cellElement
|
* @param elem is a pointer on an allocated cellElement
|
||||||
*@Col : the value for colIndex
|
* @param Col is the value for colIndex
|
||||||
*@Row : the value for rowIndex
|
* @param Row is the value for rowIndex
|
||||||
*
|
*
|
||||||
*@return : error codes
|
* @return int error codes
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
int SetPositionIndex(cellElement* elem,int Col,int Row);
|
int SetPositionIndex(cellElement* elem,int Col,int Row);
|
||||||
|
|
||||||
/*---SetNextCol---
|
/**
|
||||||
*Allows you to set the nextCol of the cellElement tree
|
* Allows you to set the nextCol of the cellElement tree
|
||||||
*
|
*
|
||||||
*@tree : a pointer on the element you want to set
|
* @param tree is a pointer on the element you want to set
|
||||||
*@elem : a pointer on a cellElement
|
* @param elem is a pointer on a cellElement
|
||||||
*
|
*
|
||||||
*@return : error codes
|
* @return int error codes
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
int SetNextCol(cellElement* tree,cellElement* elem);
|
int SetNextCol(cellElement* tree,cellElement* elem);
|
||||||
|
|
||||||
/*---SetNextRow---
|
/**
|
||||||
*Allows you to set the nextRow of the cellElement elem
|
* Allows you to set the nextRow of the cellElement elem
|
||||||
*
|
*
|
||||||
*@tree : a pointer on the element you want to set
|
* @param tree is a pointer on the element you want to set
|
||||||
*@elem : a pointer on a cellElement
|
* @param elem is a pointer on a cellElement
|
||||||
*
|
*
|
||||||
*@return : error codes
|
* @return int error codes
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
int SetNextRow(cellElement* tree,cellElement* elem);
|
int SetNextRow(cellElement* tree,cellElement* elem);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A debug function that recursively prints a tree, don't use it in not tree structured cellElements (may cause endless loops)
|
||||||
|
*
|
||||||
|
* @param tree a pointer on a cell element
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
void recursivePrint(cellElement * tree);
|
void recursivePrint(cellElement * tree);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Apply OR operator to a bool a and a bool b
|
* Apply OR operator to a bool a and a bool b*
|
||||||
|
*
|
||||||
* @param a a bool
|
* @param a a bool
|
||||||
* @param b a bool
|
* @param b a bool
|
||||||
|
*
|
||||||
* @return result a or b
|
* @return result a or b
|
||||||
*/
|
*/
|
||||||
bool OR(bool a, bool b);
|
bool OR(bool a, bool b);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Apply AND operator to a bool a and a bool b
|
* Apply AND operator to a bool a and a bool b
|
||||||
|
*
|
||||||
* @param a a bool
|
* @param a a bool
|
||||||
* @param b a bool
|
* @param b a bool
|
||||||
|
*
|
||||||
* @return result a and b
|
* @return result a and b
|
||||||
*/
|
*/
|
||||||
bool AND(bool a, bool b);
|
bool AND(bool a, bool b);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Apply XOR operator to a bool a and a bool b
|
* Apply XOR operator to a bool a and a bool b
|
||||||
|
*
|
||||||
* @param a a bool
|
* @param a a bool
|
||||||
* @param b a bool
|
* @param b a bool
|
||||||
|
*
|
||||||
* @return result a and b
|
* @return result a and b
|
||||||
*/
|
*/
|
||||||
bool XOR(bool a, bool b);
|
bool XOR(bool a, bool b);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return false if the bool is ERROR
|
* Return false if the bool is ERROR
|
||||||
|
*
|
||||||
* @param x a bool
|
* @param x a bool
|
||||||
|
*
|
||||||
* @return result a bool
|
* @return result a bool
|
||||||
*/
|
*/
|
||||||
bool ErrorToFalse(bool x);
|
bool ErrorToFalse(bool x);
|
||||||
|
@ -26,6 +26,15 @@
|
|||||||
#define SUCCESS 0
|
#define SUCCESS 0
|
||||||
#define FAILURE 1
|
#define FAILURE 1
|
||||||
|
|
||||||
|
/**
|
||||||
|
* One row or column of a Matrix
|
||||||
|
*
|
||||||
|
* @param data a pointer on the first cellElement of the column/row
|
||||||
|
* @param next a pointer on the next col/row of the Matrix
|
||||||
|
* @param previous a pointer on the previous col/row of the Matrix
|
||||||
|
* @param pos the index of the col/row in the Matrix
|
||||||
|
*
|
||||||
|
*/
|
||||||
typedef struct ListElement ListElement;
|
typedef struct ListElement ListElement;
|
||||||
struct ListElement {
|
struct ListElement {
|
||||||
cellElement *data;
|
cellElement *data;
|
||||||
@ -34,6 +43,14 @@ struct ListElement {
|
|||||||
int pos;
|
int pos;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The list of rows or columns of a Matrix
|
||||||
|
*
|
||||||
|
* @param head a pointer on the first col/row of the Matrix
|
||||||
|
* @param tail a pointer on the last col/row of the Matrix
|
||||||
|
* @param size the number of non void cols/rows
|
||||||
|
*
|
||||||
|
*/
|
||||||
typedef struct List {
|
typedef struct List {
|
||||||
ListElement *head;
|
ListElement *head;
|
||||||
ListElement *tail;
|
ListElement *tail;
|
||||||
@ -42,6 +59,7 @@ typedef struct List {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new list
|
* Create a new list
|
||||||
|
*
|
||||||
* @return List a pointer of list
|
* @return List a pointer of list
|
||||||
*/
|
*/
|
||||||
List * CreateList();
|
List * CreateList();
|
||||||
|
@ -292,50 +292,6 @@ void printMatrix(Matrix matrix){
|
|||||||
printf("---END OF MATRIX---\n\n");
|
printf("---END OF MATRIX---\n\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RecursiveFreeCol(Matrix matrix, cellElement * elem){
|
|
||||||
cellElement * tmp = NULL;
|
|
||||||
ListElement * Row = NULL;
|
|
||||||
|
|
||||||
if (elem == NULL){
|
|
||||||
return ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (elem->nextRow != NULL){
|
|
||||||
RecursiveFreeCol(matrix,elem->nextRow);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (elem->nextRow == NULL){
|
|
||||||
|
|
||||||
Row = GetElementPos(matrix.rows,elem->rowIndex);
|
|
||||||
|
|
||||||
if (Row == NULL || Row->data == NULL ){
|
|
||||||
return ERROR; /*should never happend*/
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Row->data->colIndex == elem->colIndex){
|
|
||||||
Row->data = NULL;
|
|
||||||
} else {
|
|
||||||
tmp = Row->data;
|
|
||||||
while (tmp->nextCol != NULL && tmp->nextCol != elem){
|
|
||||||
tmp = tmp->nextCol;
|
|
||||||
}
|
|
||||||
if (tmp->nextCol == NULL){
|
|
||||||
return ERROR; /* should never happend */
|
|
||||||
} else {
|
|
||||||
tmp->nextCol = elem->nextCol;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
FreeCellElement(elem);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false; /* should never happend */
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Matrix freeMatrix(Matrix matrix){
|
Matrix freeMatrix(Matrix matrix){
|
||||||
int i = 0;
|
int i = 0;
|
||||||
int j = 0;
|
int j = 0;
|
||||||
|
@ -24,15 +24,17 @@
|
|||||||
#include <CellElement.h>
|
#include <CellElement.h>
|
||||||
#include <list.h>
|
#include <list.h>
|
||||||
|
|
||||||
/*---Matrix---
|
/**
|
||||||
*Abstract type that describe a boolean matrix
|
* Abstract type that describe a boolean matrix
|
||||||
*
|
*
|
||||||
*@colCount : the number of columns of the matrix
|
* @param colCount is the number of columns of the matrix
|
||||||
*@rowIndex : the number of rows of the matrix
|
* @param rowIndex is 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
|
|
||||||
*
|
*
|
||||||
|
* @param rows is pointer on the first row that contains a true value
|
||||||
|
* @param cols is pointer on the first col that contains a true value
|
||||||
|
*
|
||||||
|
* @see CreateMatrix to allocate one
|
||||||
|
* @see freeMatrix to free one
|
||||||
*/
|
*/
|
||||||
typedef struct Matrix {
|
typedef struct Matrix {
|
||||||
|
|
||||||
@ -47,9 +49,11 @@ typedef struct Matrix {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract type for a matrix of booleans
|
* Abstract type for a matrix of booleans
|
||||||
|
*
|
||||||
* @param rows number of rows of the matrix
|
* @param rows number of rows of the matrix
|
||||||
* @param cols numbers of columns of the matrix
|
* @param cols numbers of columns of the matrix
|
||||||
* @param data the matrix
|
* @param data the matrix
|
||||||
|
*
|
||||||
* @see CreateBooleanMatrix to create one
|
* @see CreateBooleanMatrix to create one
|
||||||
*/
|
*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -62,145 +66,159 @@ typedef struct {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Function creating an empty boolean matrix
|
* Function creating an empty boolean matrix
|
||||||
|
*
|
||||||
* @param cols number of cols
|
* @param cols number of cols
|
||||||
* @param rows number of rows
|
* @param rows number of rows
|
||||||
|
*
|
||||||
* @return booleanmatrix a new matrix
|
* @return booleanmatrix a new matrix
|
||||||
*/
|
*/
|
||||||
BooleanMatrix CreateBooleanMatrix(int cols, int rows);
|
BooleanMatrix CreateBooleanMatrix(int cols, int rows);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Randomize a BooleanMatrix
|
* Randomize a BooleanMatrix
|
||||||
|
*
|
||||||
* @param matrix a BooleanMatrix
|
* @param matrix a BooleanMatrix
|
||||||
|
*
|
||||||
* @return booleanmatrix the processed matrix
|
* @return booleanmatrix the processed matrix
|
||||||
*/
|
*/
|
||||||
BooleanMatrix RandomizeBooleanMatrix(BooleanMatrix matrix);
|
BooleanMatrix RandomizeBooleanMatrix(BooleanMatrix matrix);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Free a BooleanMatrix
|
* Free a BooleanMatrix
|
||||||
|
*
|
||||||
* @param matrix a BooleanMatrix
|
* @param matrix a BooleanMatrix
|
||||||
* @return
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
void FreeBooleanMatrix(BooleanMatrix matrix);
|
void FreeBooleanMatrix(BooleanMatrix matrix);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a Matrix from its array-based representation
|
* Create a Matrix from its array-based representation
|
||||||
|
*
|
||||||
* @param bmatrix BooleanMatrix
|
* @param bmatrix BooleanMatrix
|
||||||
|
*
|
||||||
* @return m Matrix
|
* @return m Matrix
|
||||||
*/
|
*/
|
||||||
Matrix newMatrix(BooleanMatrix bmatrix);
|
Matrix newMatrix(BooleanMatrix bmatrix);
|
||||||
|
|
||||||
/*---applyRules---
|
/*---applyRules---
|
||||||
*A function tha allows you to apply some rules n times on the matrix and returns it
|
* A function that allows you to apply some rules n times on the matrix and returns it
|
||||||
*
|
*
|
||||||
*@matrix : A matrix on whitch you would apply the rules
|
* @param matrix is a matrix on whitch you would apply the rules
|
||||||
*
|
* @param Rules is an integer describing the rules
|
||||||
*@Rules : Integer describing the rules
|
* @param N is the number of time the rules will be applied
|
||||||
*
|
|
||||||
*@N : number of time the rules will be applied
|
|
||||||
*
|
*
|
||||||
|
* @return Matrix
|
||||||
*/
|
*/
|
||||||
Matrix applyRules(Matrix matrix,int Rules, int N);
|
Matrix applyRules(Matrix matrix,int Rules, int N);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Create a void Matrix
|
* Create a void Matrix
|
||||||
*
|
*
|
||||||
*@return a matrix
|
* @return a matrix
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
Matrix CreateMatrix();
|
Matrix CreateMatrix();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Find and return the cell in the given matrix
|
* Find and return the cell in the given matrix
|
||||||
*
|
*
|
||||||
*@param matrix the Matrix where we search
|
* @param matrix the Matrix where we search
|
||||||
*@param ColPos an int indicating the column of the cell
|
* @param ColPos an int indicating the column of the cell
|
||||||
*@param RowPos an int indicating the row of the cell
|
* @param RowPos an int indicating the row of the cell
|
||||||
*
|
*
|
||||||
*@return a cellElement
|
* @return a cellElement
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
cellElement * FindMatrixElem(Matrix matrix, int ColPos, int RowPos);
|
cellElement * FindMatrixElem(Matrix matrix, int ColPos, int RowPos);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Create the cell in the given matrix
|
* Create the cell in the given matrix
|
||||||
*
|
*
|
||||||
*@param matrix the Matrix
|
* @param matrix the Matrix
|
||||||
*@param ColPos an int indicating the column of the cell
|
* @param ColPos an int indicating the column of the cell
|
||||||
*@param RowPos an int indicating the row of the cell
|
* @param RowPos an int indicating the row of the cell
|
||||||
*
|
*
|
||||||
*@return a bool (error code)
|
* @return a bool (error code)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
bool CreateMatrixElem(Matrix matrix, int ColPos, int RowPos);
|
bool CreateMatrixElem(Matrix matrix, int ColPos, int RowPos);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Delete the cell in the given matrix
|
* Delete the cell in the given matrix
|
||||||
*
|
*
|
||||||
*@param matrix the Matrix
|
* @param matrix the Matrix
|
||||||
*@param ColPos an int indicating the column of the cell
|
* @param ColPos an int indicating the column of the cell
|
||||||
*@param RowPos an int indicating the row of the cell
|
* @param RowPos an int indicating the row of the cell
|
||||||
*
|
*
|
||||||
*@return an error code (int)
|
* @return an error code (int)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
int SupprMatrixElem(Matrix matrix, int ColPos, int RowPos);
|
int SupprMatrixElem(Matrix matrix, int ColPos, int RowPos);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Delete or create the cell in the given matrix to fit the value
|
* Delete or create the cell in the given matrix to fit the value
|
||||||
*
|
*
|
||||||
*@param matrix the Matrix
|
* @param matrix the Matrix
|
||||||
*@param ColPos an int indicating the column of the cell
|
* @param ColPos an int indicating the column of the cell
|
||||||
*@param RowPos an int indicating the row of the cell
|
* @param RowPos an int indicating the row of the cell
|
||||||
*
|
*
|
||||||
*@return an error code (bool)
|
* @return an error code (bool)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
bool SetCellValue(Matrix matrix, int ColPos, int RowPos, bool value);
|
bool SetCellValue(Matrix matrix, int ColPos, int RowPos, bool value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Checks out the value of the cell in the given matrix
|
* Checks out the value of the cell in the given matrix
|
||||||
*
|
*
|
||||||
*@param matrix the Matrix
|
* @param matrix the Matrix
|
||||||
*@param ColPos an int indicating the column of the cell
|
* @param ColPos an int indicating the column of the cell
|
||||||
*@param RowPos an int indicating the row of the cell
|
* @param RowPos an int indicating the row of the cell
|
||||||
*
|
*
|
||||||
*@return the value (bool)
|
* @return the value (bool)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
bool GetCellValue(Matrix matrix, int ColPos, int RowPos);
|
bool GetCellValue(Matrix matrix, int ColPos, int RowPos);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Set the number of columns and rows of the matrix and returns it
|
* Set the number of columns and rows of the matrix and returns it
|
||||||
*
|
*
|
||||||
*@param matrix the Matrix
|
* @param matrix the Matrix
|
||||||
*@param nbCols an int indicating the number of columns
|
* @param nbCols an int indicating the number of columns
|
||||||
*@param nbRows an int indicating the number of rows
|
* @param nbRows an int indicating the number of rows
|
||||||
*
|
*
|
||||||
*@return the matrix
|
* @return the matrix
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
Matrix SetMatrixDim(Matrix matrix,int nbCols,int nbRows);
|
Matrix SetMatrixDim(Matrix matrix,int nbCols,int nbRows);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Basically print the Matrix in the standard output
|
* Basically print the Matrix in the standard output
|
||||||
*
|
*
|
||||||
*@param matrix the Matrix
|
* @param matrix the Matrix
|
||||||
*
|
*
|
||||||
*@return void
|
* @return void
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void printMatrix(Matrix matrix);
|
void printMatrix(Matrix matrix);
|
||||||
|
|
||||||
bool RecursiveFreeCol(Matrix matrix, cellElement * elem);
|
/**
|
||||||
|
* Allows you to free a Matrix
|
||||||
|
*
|
||||||
|
* @param matrix is the Matrix you want to free
|
||||||
|
*
|
||||||
|
* @return Matrix non allocated
|
||||||
|
*/
|
||||||
Matrix freeMatrix(Matrix matrix);
|
Matrix freeMatrix(Matrix matrix);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Given an input matrix with M rows and N columns, computes a matrix with
|
* 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
|
* M rows and N-1 columns were each element corresponds to the operator boolean operation
|
||||||
* between two successive horizontal elements in the input matrix
|
* between two successive horizontal elements in the input matrix
|
||||||
|
*
|
||||||
* @param m a Matrix
|
* @param m a Matrix
|
||||||
* @param operator a function
|
* @param operator a function
|
||||||
|
*
|
||||||
* @return Matrix the copmuted matrix
|
* @return Matrix the copmuted matrix
|
||||||
*/
|
*/
|
||||||
Matrix colSequenceOnMatrix(Matrix m, bool (operator)(bool, bool));
|
Matrix colSequenceOnMatrix(Matrix m, bool (operator)(bool, bool));
|
||||||
@ -209,8 +227,10 @@ Matrix colSequenceOnMatrix(Matrix m, bool (operator)(bool, bool));
|
|||||||
* Given an input matrix with M rows and N columns, computes a matrix with
|
* 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
|
* M-1 rows and N columns were each element corresponds to the operator boolean operation
|
||||||
* between two succesive vertical elements in the input matrix
|
* between two succesive vertical elements in the input matrix
|
||||||
|
*
|
||||||
* @param m a Matrix
|
* @param m a Matrix
|
||||||
* @param operator a function
|
* @param operator a function
|
||||||
|
*
|
||||||
* @return Matrix the copmuted matrix
|
* @return Matrix the copmuted matrix
|
||||||
*/
|
*/
|
||||||
Matrix rowSequenceOnMatrix(Matrix m, bool (operator)(bool, bool));
|
Matrix rowSequenceOnMatrix(Matrix m, bool (operator)(bool, bool));
|
||||||
@ -219,7 +239,9 @@ Matrix rowSequenceOnMatrix(Matrix m, bool (operator)(bool, bool));
|
|||||||
* Given an input matrix with M rows and N columns, computes a matrix with
|
* 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
|
* M rows and N-1 columns were each element corresponds to the AND boolean operation
|
||||||
* between two successive horizontal elements in the input matrix
|
* between two successive horizontal elements in the input matrix
|
||||||
|
*
|
||||||
* @param m a Matrix
|
* @param m a Matrix
|
||||||
|
*
|
||||||
* @return Matrix the copmuted matrix
|
* @return Matrix the copmuted matrix
|
||||||
*/
|
*/
|
||||||
Matrix andColSequenceOnMatrix(Matrix m);
|
Matrix andColSequenceOnMatrix(Matrix m);
|
||||||
@ -228,7 +250,9 @@ Matrix andColSequenceOnMatrix(Matrix m);
|
|||||||
* Given an input matrix with M rows and N columns, computes a matrix with
|
* 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
|
* M rows and N-1 columns were each element corresponds to the OR boolean operation
|
||||||
* between two successive horizontal elements in the input matrix
|
* between two successive horizontal elements in the input matrix
|
||||||
|
*
|
||||||
* @param m a Matrix
|
* @param m a Matrix
|
||||||
|
*
|
||||||
* @return Matrix the copmuted matrix
|
* @return Matrix the copmuted matrix
|
||||||
*/
|
*/
|
||||||
Matrix orColSequenceOnMatrix(Matrix m);
|
Matrix orColSequenceOnMatrix(Matrix m);
|
||||||
@ -237,7 +261,9 @@ Matrix orColSequenceOnMatrix(Matrix m);
|
|||||||
* Given an input matrix with M rows and N columns, computes a matrix with
|
* 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
|
* M-1 rows and N columns were each element corresponds to the AND boolean operation
|
||||||
* between two succesive vertical elements in the input matrix
|
* between two succesive vertical elements in the input matrix
|
||||||
|
*
|
||||||
* @param m a Matrix
|
* @param m a Matrix
|
||||||
|
*
|
||||||
* @return Matrix the copmuted matrix
|
* @return Matrix the copmuted matrix
|
||||||
*/
|
*/
|
||||||
Matrix andRowSequenceOnMatrix(Matrix m);
|
Matrix andRowSequenceOnMatrix(Matrix m);
|
||||||
@ -246,140 +272,227 @@ Matrix andRowSequenceOnMatrix(Matrix m);
|
|||||||
* Given an input matrix with M rows and N columns, computes a matrix with
|
* 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
|
* M-1 rows and N columns were each element corresponds to the OR boolean operation
|
||||||
* between two succesive vertical elements in the input matrix
|
* between two succesive vertical elements in the input matrix
|
||||||
|
*
|
||||||
* @param m a Matrix
|
* @param m a Matrix
|
||||||
|
*
|
||||||
* @return Matrix the copmuted matrix
|
* @return Matrix the copmuted matrix
|
||||||
*/
|
*/
|
||||||
Matrix orRowSequenceOnMatrix(Matrix m);
|
Matrix orRowSequenceOnMatrix(Matrix m);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Apply a given set of rules
|
* Apply a given set of rules
|
||||||
|
*
|
||||||
* @param m a matrix
|
* @param m a matrix
|
||||||
* @param n the number of rules
|
* @param n the number of rules
|
||||||
* @param rules an array of rules
|
* @param rules an array of rules
|
||||||
|
*
|
||||||
* @return Matrix a new modified matrix
|
* @return Matrix a new modified matrix
|
||||||
*/
|
*/
|
||||||
Matrix matrixFromRules(Matrix m, int n, int rules[]);
|
Matrix matrixFromRules(Matrix m, int n, int rules[]);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Apply XOR to a given number of bools
|
* Apply XOR to a given number of bools
|
||||||
* @param n the number of bool
|
*
|
||||||
|
* @param n the number of bools
|
||||||
* @param bools an array of bool
|
* @param bools an array of bool
|
||||||
|
*
|
||||||
* @return bool the processed bool
|
* @return bool the processed bool
|
||||||
*/
|
*/
|
||||||
bool MXOR(int n, bool bools[]);
|
bool MXOR(int n, bool bools[]);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a cell with first rule
|
* Get a cell with first rule
|
||||||
|
*
|
||||||
* @param m a matrix
|
* @param m a matrix
|
||||||
* @param ColPos collumn pos of the current cell
|
* @param ColPos collumn pos of the current cell
|
||||||
* @param RowPos row pos of the current cell
|
* @param RowPos row pos of the current cell
|
||||||
|
*
|
||||||
* @return bool the value of the cell got by the rule
|
* @return bool the value of the cell got by the rule
|
||||||
*/
|
*/
|
||||||
bool firstRule(Matrix m, int ColPos, int RowPos);
|
bool firstRule(Matrix m, int ColPos, int RowPos);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a cell with right rule
|
* Get a cell with right rule
|
||||||
|
*
|
||||||
* @param m a matrix
|
* @param m a matrix
|
||||||
* @param ColPos collumn pos of the current cell
|
* @param ColPos collumn pos of the current cell
|
||||||
* @param RowPos row pos of the current cell
|
* @param RowPos row pos of the current cell
|
||||||
|
*
|
||||||
* @return bool the value of the cell got by the rule
|
* @return bool the value of the cell got by the rule
|
||||||
*/
|
*/
|
||||||
bool rightRule(Matrix m, int ColPos, int RowPos);
|
bool rightRule(Matrix m, int ColPos, int RowPos);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a cell with left rule
|
* Get a cell with left rule
|
||||||
|
*
|
||||||
* @param m a matrix
|
* @param m a matrix
|
||||||
* @param ColPos collumn pos of the current cell
|
* @param ColPos collumn pos of the current cell
|
||||||
* @param RowPos row pos of the current cell
|
* @param RowPos row pos of the current cell
|
||||||
|
*
|
||||||
* @return bool the value of the cell got by the rule
|
* @return bool the value of the cell got by the rule
|
||||||
*/
|
*/
|
||||||
bool leftRule(Matrix m, int ColPos, int RowPos);
|
bool leftRule(Matrix m, int ColPos, int RowPos);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a cell with top rule
|
* Get a cell with top rule
|
||||||
|
*
|
||||||
* @param m a matrix
|
* @param m a matrix
|
||||||
* @param ColPos collumn pos of the current cell
|
* @param ColPos collumn pos of the current cell
|
||||||
* @param RowPos row pos of the current cell
|
* @param RowPos row pos of the current cell
|
||||||
|
*
|
||||||
* @return bool the value of the cell got by the rule
|
* @return bool the value of the cell got by the rule
|
||||||
*/
|
*/
|
||||||
bool topRule(Matrix m, int ColPos, int RowPos);
|
bool topRule(Matrix m, int ColPos, int RowPos);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a cell with bottom rule
|
* Get a cell with bottom rule
|
||||||
|
*
|
||||||
* @param m a matrix
|
* @param m a matrix
|
||||||
* @param ColPos collumn pos of the current cell
|
* @param ColPos collumn pos of the current cell
|
||||||
* @param RowPos row pos of the current cell
|
* @param RowPos row pos of the current cell
|
||||||
|
*
|
||||||
* @return bool the value of the cell got by the rule
|
* @return bool the value of the cell got by the rule
|
||||||
*/
|
*/
|
||||||
bool bottomRule(Matrix m, int ColPos, int RowPos);
|
bool bottomRule(Matrix m, int ColPos, int RowPos);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a cell with top_left rule
|
* Get a cell with top_left rule
|
||||||
|
*
|
||||||
* @param m a matrix
|
* @param m a matrix
|
||||||
* @param ColPos collumn pos of the current cell
|
* @param ColPos collumn pos of the current cell
|
||||||
* @param RowPos row pos of the current cell
|
* @param RowPos row pos of the current cell
|
||||||
|
*
|
||||||
* @return bool the value of the cell got by the rule
|
* @return bool the value of the cell got by the rule
|
||||||
*/
|
*/
|
||||||
bool top_leftRule(Matrix m, int ColPos, int RowPos);
|
bool top_leftRule(Matrix m, int ColPos, int RowPos);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a cell with top_right rule
|
* Get a cell with top_right rule
|
||||||
|
*
|
||||||
* @param m a matrix
|
* @param m a matrix
|
||||||
* @param ColPos collumn pos of the current cell
|
* @param ColPos collumn pos of the current cell
|
||||||
* @param RowPos row pos of the current cell
|
* @param RowPos row pos of the current cell
|
||||||
|
*
|
||||||
* @return bool the value of the cell got by the rule
|
* @return bool the value of the cell got by the rule
|
||||||
*/
|
*/
|
||||||
bool top_rightRule(Matrix m, int ColPos, int RowPos);
|
bool top_rightRule(Matrix m, int ColPos, int RowPos);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a cell with bottom_left rule
|
* Get a cell with bottom_left rule
|
||||||
|
*
|
||||||
* @param m a matrix
|
* @param m a matrix
|
||||||
* @param ColPos collumn pos of the current cell
|
* @param ColPos collumn pos of the current cell
|
||||||
* @param RowPos row pos of the current cell
|
* @param RowPos row pos of the current cell
|
||||||
|
*
|
||||||
* @return bool the value of the cell got by the rule
|
* @return bool the value of the cell got by the rule
|
||||||
*/
|
*/
|
||||||
bool bottom_leftRule(Matrix m, int ColPos, int RowPos);
|
bool bottom_leftRule(Matrix m, int ColPos, int RowPos);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a cell with bottom_right rule
|
* Get a cell with bottom_right rule
|
||||||
|
*
|
||||||
* @param m a matrix
|
* @param m a matrix
|
||||||
* @param ColPos collumn pos of the current cell
|
* @param ColPos collumn pos of the current cell
|
||||||
* @param RowPos row pos of the current cell
|
* @param RowPos row pos of the current cell
|
||||||
|
*
|
||||||
* @return bool the value of the cell got by the rule
|
* @return bool the value of the cell got by the rule
|
||||||
*/
|
*/
|
||||||
bool bottom_rightRule(Matrix m, int ColPos, int RowPos);
|
bool bottom_rightRule(Matrix m, int ColPos, int RowPos);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a list of bool from a given set of rules
|
* Get a list of bool from a given set of rules
|
||||||
|
*
|
||||||
* @param m a Matrix
|
* @param m a Matrix
|
||||||
* @param ColPos colon position of the point
|
* @param ColPos colon position of the point
|
||||||
* @param RowPos colon position of the point
|
* @param RowPos colon position of the point
|
||||||
* @param n number of rules
|
* @param n number of rules
|
||||||
* @param rules[] an array of rules
|
* @param rules[] an array of rules
|
||||||
|
*
|
||||||
* @return bool[] an array of bool
|
* @return bool[] an array of bool
|
||||||
*/
|
*/
|
||||||
bool * GetFromRules(Matrix m, int ColPos, int RowPos, int n, int rules[]);
|
bool * GetFromRules(Matrix m, int ColPos, int RowPos, int n, int rules[]);
|
||||||
|
|
||||||
/*---applyRules---
|
/**
|
||||||
*A function tha allows you to apply some rules n times on the matrix and returns it
|
* Allows you to use boolean operators between two matrices
|
||||||
*
|
*
|
||||||
*@matrix : A matrix on whitch you would apply the rules
|
* @param matrix1 the first matrix you want to operate on
|
||||||
*
|
* @param matrix2 the second matrix you want to operate on
|
||||||
*@Rules : Integer describing the rules
|
* @param operator the function operator you want to use
|
||||||
*
|
|
||||||
*@N : number of time the rules will be applied
|
|
||||||
*
|
*
|
||||||
|
* @return Matrix
|
||||||
*/
|
*/
|
||||||
Matrix applyRules(Matrix matrix,int Rules, int N);
|
Matrix opMatrix(Matrix matrix1,Matrix matrix2,bool (operator)(bool, bool));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allows you to add two Matrices
|
||||||
|
*
|
||||||
|
* @param matrix1 the first matrix you want to add
|
||||||
|
* @param matrix2 the second matrix you want to add
|
||||||
|
*
|
||||||
|
* @return Matrix the sum
|
||||||
|
*/
|
||||||
Matrix sumMatrix(Matrix matrix1,Matrix matrix2);
|
Matrix sumMatrix(Matrix matrix1,Matrix matrix2);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allows you to multiply two Matrices (with the AND operator)
|
||||||
|
*
|
||||||
|
* @param matrix1 the first matrix you want to multiply
|
||||||
|
* @param matrix2 the second matrix you want to multiply
|
||||||
|
*
|
||||||
|
* @return Matrix the product
|
||||||
|
*/
|
||||||
Matrix mulMatrix(Matrix matrix1,Matrix matrix2);
|
Matrix mulMatrix(Matrix matrix1,Matrix matrix2);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check out if the matrix is Empty
|
||||||
|
*
|
||||||
|
* @param matrix the matrix you want to check
|
||||||
|
*
|
||||||
|
* @return bool (true/false)
|
||||||
|
*/
|
||||||
bool isMatrixEmpty(Matrix matrix);
|
bool isMatrixEmpty(Matrix matrix);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check out if the matrix is square
|
||||||
|
*
|
||||||
|
* @param matrix the matrix you want to check
|
||||||
|
*
|
||||||
|
* @return bool (true/false)
|
||||||
|
*/
|
||||||
bool isMatrixSquare(Matrix matrix);
|
bool isMatrixSquare(Matrix matrix);
|
||||||
bool isColumnEmpty(Matrix matrix,int nb);
|
|
||||||
bool isRowEmpty(Matrix matrix,int nb);
|
|
||||||
|
/**
|
||||||
|
* Check out if the Matrices are equals
|
||||||
|
*
|
||||||
|
* @param m1 Matrices
|
||||||
|
* @param m2 Matrices
|
||||||
|
*
|
||||||
|
* @return bool (true/false)
|
||||||
|
*/
|
||||||
bool equalsMatrix(Matrix m1, Matrix m2);
|
bool equalsMatrix(Matrix m1, Matrix m2);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check out if the column is empty
|
||||||
|
*
|
||||||
|
* @param matrix the Matrix where the column is in
|
||||||
|
* @param the number of the column
|
||||||
|
*
|
||||||
|
* @return bool (true/false)
|
||||||
|
*/
|
||||||
|
bool isColumnEmpty(Matrix matrix,int nb);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check out if the row is empty
|
||||||
|
*
|
||||||
|
* @param matrix the Matrix where the row is in
|
||||||
|
* @param the number of the row
|
||||||
|
*
|
||||||
|
* @return bool (true/false)
|
||||||
|
*/
|
||||||
|
bool isRowEmpty(Matrix matrix,int nb);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user