Ébauche de tendance.
This commit is contained in:
parent
12c9c17874
commit
e044a98359
@ -44,9 +44,9 @@ GOL::Statistics GOLTeamH::statistics() const
|
|||||||
.totalDeadAbs = mData.totalDead(),
|
.totalDeadAbs = mData.totalDead(),
|
||||||
.totalAliveAbs = mData.totalAlive(),
|
.totalAliveAbs = mData.totalAlive(),
|
||||||
.totalDeadRel = mData.totalDeadRel(),
|
.totalDeadRel = mData.totalDeadRel(),
|
||||||
.totalAliveRel = mData.totalAliveRel()
|
.totalAliveRel = mData.totalAliveRel(),
|
||||||
// .tendencyAbs = ...,
|
.tendencyAbs = mData.tendencyAbs(),
|
||||||
// .tendencyRel = ...
|
.tendencyRel = mData.tendencyRel()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -284,7 +284,7 @@ void GOLTeamH::fill(State state)
|
|||||||
//! \param firstCell L'état de la première cellule.
|
//! \param firstCell L'état de la première cellule.
|
||||||
void GOLTeamH::fillAlternately(State firstCell)
|
void GOLTeamH::fillAlternately(State firstCell)
|
||||||
{
|
{
|
||||||
mData.fillAternately(firstCell, mBorderManagement == GOL::BorderManagement::immutableAsIs);
|
mData.fillAlternately(firstCell, mBorderManagement == GOL::BorderManagement::immutableAsIs);
|
||||||
mIteration = 0;
|
mIteration = 0;
|
||||||
countLifeStatusCells();
|
countLifeStatusCells();
|
||||||
}
|
}
|
||||||
@ -623,6 +623,5 @@ void GOLTeamH::countLifeStatusCells()
|
|||||||
}
|
}
|
||||||
s_ptr++;
|
s_ptr++;
|
||||||
}
|
}
|
||||||
|
|
||||||
mData.setAliveCount(aliveCount);
|
mData.setAliveCount(aliveCount);
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,8 @@ GridTeamH::GridTeamH()
|
|||||||
}
|
}
|
||||||
|
|
||||||
GridTeamH::GridTeamH(size_t width, size_t height, CellType initValue)
|
GridTeamH::GridTeamH(size_t width, size_t height, CellType initValue)
|
||||||
:mWidth{ width }, mHeight{ height }, mEngine(mRandomDevice()), mDistribution(0.0, 1.0), mAliveCount{}
|
:mWidth{ width }, mHeight{ height }, mEngine(mRandomDevice()), mDistribution(0.0, 1.0)
|
||||||
|
, mAliveCount{}, mLastGenAliveCount{}
|
||||||
, mData{}, mIntermediateData{}
|
, mData{}, mIntermediateData{}
|
||||||
{
|
{
|
||||||
resize(width, height, initValue);
|
resize(width, height, initValue);
|
||||||
@ -134,10 +135,10 @@ void GridTeamH::setAt(int column, int row, CellType value)
|
|||||||
|
|
||||||
void GridTeamH::setAliveCount(size_t aliveCount)
|
void GridTeamH::setAliveCount(size_t aliveCount)
|
||||||
{
|
{
|
||||||
|
mLastGenAliveCount = mAliveCount;
|
||||||
mAliveCount = aliveCount;
|
mAliveCount = aliveCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Accesseur en lecture seule sur le "buffer" de la grille.
|
// Accesseur en lecture seule sur le "buffer" de la grille.
|
||||||
GridTeamH::DataType const& GridTeamH::data() const
|
GridTeamH::DataType const& GridTeamH::data() const
|
||||||
{
|
{
|
||||||
@ -162,7 +163,7 @@ GridTeamH::DataType& GridTeamH::intData()
|
|||||||
|
|
||||||
size_t GridTeamH::totalDead() const
|
size_t GridTeamH::totalDead() const
|
||||||
{
|
{
|
||||||
return mAliveCount;
|
return (mWidth * mHeight) - mAliveCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
float GridTeamH::totalDeadRel() const
|
float GridTeamH::totalDeadRel() const
|
||||||
@ -172,7 +173,7 @@ float GridTeamH::totalDeadRel() const
|
|||||||
|
|
||||||
size_t GridTeamH::totalAlive() const
|
size_t GridTeamH::totalAlive() const
|
||||||
{
|
{
|
||||||
return (mWidth * mHeight) - mAliveCount;
|
return mAliveCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
float GridTeamH::totalAliveRel() const
|
float GridTeamH::totalAliveRel() const
|
||||||
@ -180,6 +181,36 @@ float GridTeamH::totalAliveRel() const
|
|||||||
return static_cast<float>(totalAlive()) / static_cast<float>(size());
|
return static_cast<float>(totalAlive()) / static_cast<float>(size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t GridTeamH::lastGenDead() const
|
||||||
|
{
|
||||||
|
return (mWidth * mHeight) - mLastGenAliveCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
float GridTeamH::lastGenDeadRel() const
|
||||||
|
{
|
||||||
|
return static_cast<float>(lastGenDead()) / static_cast<float>(size());
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t GridTeamH::lastGenAlive() const
|
||||||
|
{
|
||||||
|
return mLastGenAliveCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
float GridTeamH::lastGenAliveRel() const
|
||||||
|
{
|
||||||
|
return static_cast<float>(lastGenAlive()) / static_cast<float>(size());
|
||||||
|
}
|
||||||
|
|
||||||
|
int GridTeamH::tendencyAbs() const
|
||||||
|
{
|
||||||
|
return lastGenAlive() - totalAlive();
|
||||||
|
}
|
||||||
|
|
||||||
|
float GridTeamH::tendencyRel() const
|
||||||
|
{
|
||||||
|
return static_cast<float>(tendencyAbs()) / static_cast<float>(size());
|
||||||
|
}
|
||||||
|
|
||||||
void GridTeamH::fill(CellType value, bool fillBorder)
|
void GridTeamH::fill(CellType value, bool fillBorder)
|
||||||
{
|
{
|
||||||
for (size_t i{ static_cast<size_t>(1) - fillBorder }; i < mWidth - (static_cast<size_t>(1) - fillBorder); i++)
|
for (size_t i{ static_cast<size_t>(1) - fillBorder }; i < mWidth - (static_cast<size_t>(1) - fillBorder); i++)
|
||||||
@ -187,7 +218,7 @@ void GridTeamH::fill(CellType value, bool fillBorder)
|
|||||||
mData[i + (j * mWidth)] = value;
|
mData[i + (j * mWidth)] = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GridTeamH::fillAternately(CellType initValue, bool fillBorder)
|
void GridTeamH::fillAlternately(CellType initValue, bool fillBorder)
|
||||||
{
|
{
|
||||||
auto otherValue = (initValue == CellType::alive) ? CellType::dead : CellType::alive;
|
auto otherValue = (initValue == CellType::alive) ? CellType::dead : CellType::alive;
|
||||||
|
|
||||||
|
@ -42,7 +42,6 @@ public:
|
|||||||
size_t width() const { return mWidth; }
|
size_t width() const { return mWidth; }
|
||||||
size_t height() const { return mHeight; }
|
size_t height() const { return mHeight; }
|
||||||
size_t size() const { return mHeight * mWidth; }
|
size_t size() const { return mHeight * mWidth; }
|
||||||
size_t aliveCount() const { return mAliveCount; }
|
|
||||||
|
|
||||||
void resize(size_t width, size_t height, CellType initValue = CellType{});
|
void resize(size_t width, size_t height, CellType initValue = CellType{});
|
||||||
|
|
||||||
@ -68,8 +67,17 @@ public:
|
|||||||
size_t totalAlive() const;
|
size_t totalAlive() const;
|
||||||
float totalAliveRel() const;
|
float totalAliveRel() const;
|
||||||
|
|
||||||
|
size_t lastGenDead() const;
|
||||||
|
float lastGenDeadRel() const;
|
||||||
|
|
||||||
|
size_t lastGenAlive() const;
|
||||||
|
float lastGenAliveRel() const;
|
||||||
|
|
||||||
|
int tendencyAbs() const;
|
||||||
|
float tendencyRel() const;
|
||||||
|
|
||||||
void fill(CellType value, bool fillBorder);
|
void fill(CellType value, bool fillBorder);
|
||||||
void fillAternately(CellType initValue, bool fillBorder);
|
void fillAlternately(CellType initValue, bool fillBorder);
|
||||||
void randomize(double percentAlive, bool fillBorder);
|
void randomize(double percentAlive, bool fillBorder);
|
||||||
|
|
||||||
void fillBorder(CellType value);
|
void fillBorder(CellType value);
|
||||||
@ -80,7 +88,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
DataType mData, mIntermediateData;
|
DataType mData, mIntermediateData;
|
||||||
size_t mWidth, mHeight, mAliveCount;
|
size_t mWidth, mHeight, mAliveCount, mLastGenAliveCount;
|
||||||
|
|
||||||
// Pour la génération de nombres aléatoires
|
// Pour la génération de nombres aléatoires
|
||||||
std::random_device mRandomDevice;
|
std::random_device mRandomDevice;
|
||||||
|
Loading…
Reference in New Issue
Block a user