mirror of
https://gitlab.com/klmp200/LO27.git
synced 2024-11-23 02:53:20 +00:00
Génération aléatoire de matrices et import depuis une matrice de bool
This commit is contained in:
parent
f327f1024b
commit
4aeedd44c6
@ -1,6 +1,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <matrix.h>
|
#include <matrix.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
Matrix applyRules (Matrix matrix,int Rules, int N){
|
Matrix applyRules (Matrix matrix,int Rules, int N){
|
||||||
int power = 2;
|
int power = 2;
|
||||||
@ -382,6 +383,70 @@ Matrix orRowSequenceOnMatrix(Matrix m){
|
|||||||
return rowSequenceOnMatrix(m, OR);
|
return rowSequenceOnMatrix(m, OR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Matrix newMatrix(BooleanMatrix bmatrix){
|
||||||
|
Matrix m = CreateMatrix();
|
||||||
|
int i;
|
||||||
|
int j;
|
||||||
|
|
||||||
|
m.colCount = bmatrix.cols;
|
||||||
|
m.rowCount = bmatrix.rows;
|
||||||
|
|
||||||
|
for (i=0; i < m.rowCount ; i++){
|
||||||
|
for (j=0; j < m.colCount; j++){
|
||||||
|
if (bmatrix.data[i][j]){
|
||||||
|
SetCellValue(m, j, i, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
|
||||||
|
BooleanMatrix CreateBooleanMatrix(int cols, int rows){
|
||||||
|
BooleanMatrix matrix;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
matrix.rows = rows;
|
||||||
|
matrix.cols = cols;
|
||||||
|
|
||||||
|
matrix.data = (bool**)malloc(matrix.rows * sizeof(bool*));
|
||||||
|
if (matrix.data != NULL){
|
||||||
|
for (i=0; i < matrix.rows; i++){
|
||||||
|
matrix.data[i] = (bool*)malloc(matrix.cols * sizeof(bool));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return matrix;
|
||||||
|
}
|
||||||
|
|
||||||
|
BooleanMatrix RandomizeBooleanMatrix(BooleanMatrix matrix){
|
||||||
|
int i;
|
||||||
|
int j;
|
||||||
|
int r;
|
||||||
|
|
||||||
|
srand(time(NULL));
|
||||||
|
|
||||||
|
for (i=0; i < matrix.rows; i++){
|
||||||
|
for (j=0; j < matrix.cols; j++){
|
||||||
|
r = rand() % 2;
|
||||||
|
if (r == 1){
|
||||||
|
matrix.data[i][j] = true;
|
||||||
|
} else {
|
||||||
|
matrix.data[i][j] = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return matrix;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FreeBooleanMatrix(BooleanMatrix matrix){
|
||||||
|
int i;
|
||||||
|
for (i=0; i < matrix.rows; i++){
|
||||||
|
free(matrix.data[i]);
|
||||||
|
}
|
||||||
|
free(matrix.data);
|
||||||
|
}
|
||||||
|
|
||||||
/* todos :
|
/* todos :
|
||||||
*finir le freeMatrix
|
*finir le freeMatrix
|
||||||
*chasser les bugs
|
*chasser les bugs
|
||||||
|
@ -25,6 +25,50 @@ typedef struct Matrix {
|
|||||||
}Matrix;
|
}Matrix;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Abstract type for a matrix of booleans
|
||||||
|
* @param rows number of rows of the matrix
|
||||||
|
* @param cols numbers of columns of the matrix
|
||||||
|
* @param data the matrix
|
||||||
|
* @see CreateBooleanMatrix to create one
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
int rows;
|
||||||
|
int cols;
|
||||||
|
|
||||||
|
bool **data;
|
||||||
|
|
||||||
|
} BooleanMatrix;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function creating an empty boolean matrix
|
||||||
|
* @param cols number of cols
|
||||||
|
* @param rows number of rows
|
||||||
|
* @return booleanmatrix a new matrix
|
||||||
|
*/
|
||||||
|
BooleanMatrix CreateBooleanMatrix(int cols, int rows);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Randomize a BooleanMatrix
|
||||||
|
* @param matrix a BooleanMatrix
|
||||||
|
* @return booleanmatrix the processed matrix
|
||||||
|
*/
|
||||||
|
BooleanMatrix RandomizeBooleanMatrix(BooleanMatrix matrix);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free a BooleanMatrix
|
||||||
|
* @param matrix a BooleanMatrix
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
void FreeBooleanMatrix(BooleanMatrix matrix);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a Matrix from its array-based representation
|
||||||
|
* @param bmatrix BooleanMatrix
|
||||||
|
* @return m Matrix
|
||||||
|
*/
|
||||||
|
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 tha allows you to apply some rules n times on the matrix and returns it
|
||||||
*
|
*
|
||||||
|
9
main.c
9
main.c
@ -13,6 +13,15 @@
|
|||||||
int main(int argc, char **argv){
|
int main(int argc, char **argv){
|
||||||
Matrix matrix = CreateMatrix();
|
Matrix matrix = CreateMatrix();
|
||||||
Matrix m2;
|
Matrix m2;
|
||||||
|
Matrix m3;
|
||||||
|
BooleanMatrix bmatrix = CreateBooleanMatrix(5, 5);
|
||||||
|
|
||||||
|
bmatrix = RandomizeBooleanMatrix(bmatrix);
|
||||||
|
m3 = newMatrix(bmatrix);
|
||||||
|
FreeBooleanMatrix(bmatrix);
|
||||||
|
BasicPrintMatrix(m3);
|
||||||
|
freeMatrix(m3);
|
||||||
|
|
||||||
int Rule = 256;
|
int Rule = 256;
|
||||||
int N = 1;
|
int N = 1;
|
||||||
applyRules(matrix,Rule,N);
|
applyRules(matrix,Rule,N);
|
||||||
|
Loading…
Reference in New Issue
Block a user