ajouté classe Menu

This commit is contained in:
2025-03-01 20:27:36 +01:00
parent d443b25de1
commit 8088894073
11 changed files with 136 additions and 48 deletions

View File

@@ -11,12 +11,12 @@
Generator::Generator() {
}
std::vector<Polyomino> Generator::generatePolyominos(unsigned int polyominoSize) {
std::vector<Polyomino> Generator::generatePolyominos(int polyominoSize) {
this->validPolyominos.clear();
this->currentTestedShape.clear();
// no polyomino of size 0
if (polyominoSize == 0) return this->validPolyominos;
// a polyomino has at least 1 square
if (polyominoSize < 1) return this->validPolyominos;
// start generating from the monomino
this->currentTestedShape.insert(Position{0, 0});
@@ -26,7 +26,7 @@ std::vector<Polyomino> Generator::generatePolyominos(unsigned int polyominoSize)
return this->validPolyominos;
}
void Generator::generate(unsigned int polyominoSize, int lastAddedPositionNumber, int nextAvaibleNumber, std::map<Position, int> candidatePositions) {
void Generator::generate(int polyominoSize, int lastAddedPositionNumber, int nextAvaibleNumber, std::map<Position, int> candidatePositions) {
// recursion stop
if (polyominoSize == this->currentTestedShape.size()) {
Polyomino candidate(this->currentTestedShape);

View File

@@ -25,13 +25,13 @@ class Generator {
* Generates the list of all one-sided polyominos of the specified size
* @return The list of polyominos
*/
std::vector<Polyomino> generatePolyominos(unsigned int polyominoSize);
std::vector<Polyomino> generatePolyominos(int polyominoSize);
private:
/**
* Generates all one-sided polyominos of the specified size using the current tested shape
*/
void generate(unsigned int polyominoSize, int lastAddedPositionNumber, int nextAvaibleNumber, std::map<Position, int> candidatePositions);
void generate(int polyominoSize, int lastAddedPositionNumber, int nextAvaibleNumber, std::map<Position, int> candidatePositions);
/**
* Checks wheter a candidate position can be added to the current tested shape