diff --git a/report.md b/report.md index 9872337..0d2c8e7 100644 --- a/report.md +++ b/report.md @@ -32,7 +32,7 @@ BEGIN getCellValue <- ERROR endif - if (findMatrixElem( matrix , ColPos , RowPos ) == NULL) + if (findMatrixElem( matrix , ColPos , RowPos ) = NULL) getCellValue <- false endif @@ -45,7 +45,7 @@ BEGIN elem:*cellElement <- NULL Row <- getElementPos(rows(matrix),RowPos) - if (Row == NULL) + if (Row = NULL) findMatrixElem <- NULL endif @@ -60,10 +60,11 @@ END ``` *setCellValue* is a simple function based on *createMatrixElem* and *deleteMatrixElement* : + ```C setCellValue(matrix:Matrix, ColPos:integer, RowPos:integer,value:bool):bool BEGIN - if (value == true) + if (value = true) setCellValue <- createMatrixElem(matrix,ColPos,RowPos) else if ( deleteMatrixElem(matrix,ColPos,RowPos) >= 0 ) @@ -84,7 +85,7 @@ createMatrixElem( matrix:Matrix, ColPos:integer, RowPos:integer):bool tmp: *cellElement<- NULL if (colCount(matrix) <= ColPos OR rowCount(matrix) <= RowPos ) - createMatrixElem <- ERROR + createMatrixElem <- ERROR /* out of bounds */ endif elem <- CreateCellElem() @@ -93,8 +94,8 @@ createMatrixElem( matrix:Matrix, ColPos:integer, RowPos:integer):bool Row <- getElementPos(rows(matrix),RowPos) if (Row != NULL AND data(Row) != NULL) - if (colIndex(data(Row)) == ColPos) - error ++ + if (colIndex(data(Row)) = ColPos) + error ++ /* the element already exists */ else if (colIndex(data(Row)) > ColPos) nextCol(elem) <- data(Row) @@ -102,20 +103,21 @@ createMatrixElem( matrix:Matrix, ColPos:integer, RowPos:integer):bool endif else tmp <- data(Row) - + /* searching the previous element */ while ( nextCol(tmp) != NULL AND nextCol(colIndex(tmp)) < ColPos) do tmp <- nextCol(tmp) endwhile - if ( nextCol(tmp) == NULL OR colIndex(nextCol(tmp)) > ColPos) + if ( nextCol(tmp) = NULL OR colIndex(nextCol(tmp)) > ColPos) nextCol(elem) <- nextCol(tmp) nextCol(tmp) <- elem else - error ++ + error ++ /* the element already exists */ endif endif else + /* if the list is empty */ push(rows(matrix),elem) pos(tail(rows(matrix))) <- RowPos endif @@ -123,8 +125,8 @@ createMatrixElem( matrix:Matrix, ColPos:integer, RowPos:integer):bool Col <- getElementPos(cols(matrix),ColPos) if (Col != NULL AND data(Col) != NULL) - if (rowIndex(data(Col)) == RowPos) - error ++ + if (rowIndex(data(Col)) = RowPos) + error ++ /* the element already exists */ else if (rowIndex(data(Col)) > RowPos) nextRow(elem) <- data(Col) @@ -132,25 +134,28 @@ createMatrixElem( matrix:Matrix, ColPos:integer, RowPos:integer):bool endif else tmp <- data(Col) + /* searching the previous element */ while (nextRow(tmp) != NULL AND rowIndex(nextRow(tmp)) < RowPos) do tmp <- nextRow(tmp) endwhile - if (nextRow(tmp) == NULL OR rowIndex(nextRow(tmp)) > RowPos) + if (nextRow(tmp) = NULL OR rowIndex(nextRow(tmp)) > RowPos) nexRow(elem) <- nextRow(tmp) newRow(tmp) <- elem else - error ++ + error ++ /* the element already exists */ endif endif else + /* if the list is empty */ push(cols(matrix),elem) pos(tail(cols(matrix))) <- ColPos endif if (error != 0) + /* if the element already exists, free it */ FreeCellElement(elem) createMatrixElem <- true else @@ -168,64 +173,77 @@ BEGIN Col : *ListElement <- NULL elem <- findMatrixElem(matrix,ColPos,RowPos) - if (elem == NULL) + if (elem = NULL) + /* if the element does not exists */ deleteMatrixElem <- 0 endif Row <- getElementPos(rows(matrix),RowPos) - if (Row == NULL) + if (Row = NULL) + /* this shouldn't happend */ deleteMatrixElem <- -1 endif - if (data(Row) == NULL) + if (data(Row) = NULL) + /* this shouldn't happend too */ removeElementPos(rows(matrix),RowPos) deleteMatrixElem <- -1 endif - if (colIndex(data(Row)) == ColPos) + if (colIndex(data(Row)) = ColPos) + /* the element is the first element */ data(Row) <- nextCol(elem) else tmp <- data(Row) - + /* finding prefious element */ while (nextCol(tmp) != NULL AND nextCol(tmp) != elem) do tmp <- nextCol(tmp) endwhile if (nextCol(tmp) != NULL) + /* linking correctly the previous element */ nextCol(tmp) <- nextCol(elem) endif endif - if (data(Row) == NULL) + if (data(Row) = NULL) + /* if the row is empty now we delete it to save memory */ removeElementPos(rows(matrix),RowPos) endif Col <- getElementPos(cols(matrix),ColPos) - if (Col == NULL) + if (Col = NULL) + /* this shouldn't happend */ deleteMatrixElem <- -2 endif - if (data(Col) == NULL) + if (data(Col) = NULL) + /* this shouldn't happend too */ removeElementPos(cols(matrix),ColPos) deleteMatrixElem <- -1 endif - if (rowIndex(data(Col)) == RowPos) + + if (rowIndex(data(Col)) = RowPos) + /* the element is the first element */ data(Col) <- nextRow(elem) else tmp <- data(Col) + /* finding prefious element */ while (nextRow(tmp) != NULL AND nextRow(tmp) != elem) do tmp <- nextRow(tmp) endwhile if (nextRow(tmp) != NULL) + /* linking correctly the previous element */ nextRow(tmp) <- nextRow(elem) endif endif - if (data(Col) == NULL) + if (data(Col) = NULL) + /* if the col is empty now we delete it to save memory */ removeElementPos(cols(matrix),ColPos) endif @@ -277,7 +295,7 @@ Here are the algorithm of the function *applyRules* and all the one related to i ```C applyRules ( matrix:Matrix, Rules:integer, N:integer):Matrix BEGIN - RulesMatrix :integer[9] + RulesMatrix :integer[9] /* the size is the number of fundamental rules */ i:integer <- 0 power:integer <- 2 sum:integer <- 0 @@ -290,6 +308,7 @@ BEGIN applyRules <- matrix endif + /* decompotition of the rule in basic rules */ while(power <= 512) do RulesMatrix[i] <- Rules%power - sum @@ -303,6 +322,8 @@ BEGIN endwhile + /* application of the rule */ + tempMatrix1 <- matrixFromRules(matrix, i, RulesMatrix) for j from 0 to N do @@ -315,8 +336,6 @@ BEGIN applyRules <- tempMatrix1 END - - ``` # Conclusion \ No newline at end of file