iterate now computes highest value fraction it generated.

Not very useful, but isn't a massive performance waster (I think) and
it will be useful when thinking about colour schemes in graphics.
This commit is contained in:
2024-07-26 03:13:24 +01:00
parent 84c07870e4
commit 4cc1af94f6
2 changed files with 7 additions and 3 deletions

View File

@@ -69,10 +69,10 @@ word_t gcd(word_t a, word_t b)
return a;
}
void iterate(std::queue<word_t> &queue, NodeAllocator &allocator)
Fraction iterate(std::queue<word_t> &queue, NodeAllocator &allocator)
{
if (queue.empty())
return;
return {};
word_t index = queue.front();
Node node = allocator.vec[index];
if (node.left == -1)
@@ -88,6 +88,10 @@ void iterate(std::queue<word_t> &queue, NodeAllocator &allocator)
queue.pop();
queue.push(allocator.vec[index].left);
queue.push(allocator.vec[index].right);
node = allocator.vec[index];
Fraction best = MAX(node.value, allocator.vec[node.left].value);
best = MAX(best, allocator.vec[node.right].value);
return best;
}
std::string to_string(const Fraction &f)

View File

@@ -54,7 +54,7 @@ struct NodeAllocator
};
word_t gcd(word_t a, word_t b);
void iterate(std::queue<word_t> &queue, NodeAllocator &allocator);
Fraction iterate(std::queue<word_t> &queue, NodeAllocator &allocator);
std::string to_string(const Fraction &);
std::string to_string(const NodeAllocator &, const word_t, int depth = 1);