Ignore duplicate entries after partial recreation
This commit is contained in:
parent
a23507d086
commit
23acf86791
|
@ -501,6 +501,7 @@ bool Equihash<N,K>::OptimisedSolve(const eh_HashState& base_state,
|
||||||
// Now for each solution run the algorithm again to recreate the indices
|
// Now for each solution run the algorithm again to recreate the indices
|
||||||
LogPrint("pow", "Culling solutions\n");
|
LogPrint("pow", "Culling solutions\n");
|
||||||
for (std::shared_ptr<eh_trunc> partialSoln : partialSolns) {
|
for (std::shared_ptr<eh_trunc> partialSoln : partialSolns) {
|
||||||
|
std::set<std::vector<eh_index>> solns;
|
||||||
size_t hashLen;
|
size_t hashLen;
|
||||||
size_t lenIndices;
|
size_t lenIndices;
|
||||||
std::vector<boost::optional<std::vector<FullStepRow<FinalFullWidth>>>> X;
|
std::vector<boost::optional<std::vector<FullStepRow<FinalFullWidth>>>> X;
|
||||||
|
@ -562,7 +563,10 @@ bool Equihash<N,K>::OptimisedSolve(const eh_HashState& base_state,
|
||||||
// We are at the top of the tree
|
// We are at the top of the tree
|
||||||
assert(X.size() == K+1);
|
assert(X.size() == K+1);
|
||||||
for (FullStepRow<FinalFullWidth> row : *X[K]) {
|
for (FullStepRow<FinalFullWidth> row : *X[K]) {
|
||||||
if (validBlock(row.GetIndices(hashLen, lenIndices)))
|
solns.insert(row.GetIndices(hashLen, lenIndices));
|
||||||
|
}
|
||||||
|
for (auto soln : solns) {
|
||||||
|
if (validBlock(soln))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (cancelled(PartialEnd)) throw solver_cancelled;
|
if (cancelled(PartialEnd)) throw solver_cancelled;
|
||||||
|
|
Loading…
Reference in New Issue