diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2024-07-26 03:13:24 +0100 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2024-07-26 03:13:24 +0100 |
commit | 4cc1af94f67a0a7427fc0f42fbb97a091b859141 (patch) | |
tree | cca380e5295c18393265757bc0480125ce612d7b | |
parent | 84c07870e461ecd1761797304b4ee0aca5bb231e (diff) | |
download | cw_tree-4cc1af94f67a0a7427fc0f42fbb97a091b859141.tar.gz cw_tree-4cc1af94f67a0a7427fc0f42fbb97a091b859141.tar.bz2 cw_tree-4cc1af94f67a0a7427fc0f42fbb97a091b859141.zip |
`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.
-rw-r--r-- | src/numerics.cpp | 8 | ||||
-rw-r--r-- | src/numerics.hpp | 2 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/numerics.cpp b/src/numerics.cpp index 833ac5f..f992873 100644 --- a/src/numerics.cpp +++ b/src/numerics.cpp @@ -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) diff --git a/src/numerics.hpp b/src/numerics.hpp index f095368..9fdaf56 100644 --- a/src/numerics.hpp +++ b/src/numerics.hpp @@ -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); |