diff options
author | Claudius "keldu" Holeksa <mail@keldu.de> | 2023-12-04 12:18:14 +0100 |
---|---|---|
committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2023-12-04 12:18:14 +0100 |
commit | a14896f9ed209dd3f9597722e5a5697bd7dbf531 (patch) | |
tree | 089ca5cbbd206d1921f8f6b53292f5bc1902ca5c /modules/core/mcts.h | |
parent | 84ecdcbca9e55b1f57fbb832e12ff4fdbb86e7c9 (diff) |
meta: Renamed folder containing source
Diffstat (limited to 'modules/core/mcts.h')
-rw-r--r-- | modules/core/mcts.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/modules/core/mcts.h b/modules/core/mcts.h new file mode 100644 index 0000000..8a8f5ea --- /dev/null +++ b/modules/core/mcts.h @@ -0,0 +1,52 @@ +#pragma once + +#include "tree.h" + +namespace saw { +template<typename T> +class mcts_tree { +private: + struct value { + uint64_t numerater; + uint64_t denominater; + T state; + + value() = default; + value(T st): + numerater{0}, + denominater{0}, + state{std::move(st)} + {} + }; + + tree_container<value, mcts_tree<T>> data_; +public: + mcts_tree() = default{ + data_.add(value{}); + } + + mcts_tree(T state){ + data_.add(value{std::move(state)}); + } + + size_t size() const { + return data_.size() - 1; + } + + T& get_state(){ + return data_.at(0).get_value().state; + } + + const T& get_state() const { + return data_.at(0).get_value().state; + } + + mcts_tree<T>& get_tree(size_t i){ + return data_.at(i+1).get_tree(); + } + + const mcts_tree<T>& get_tree(size_t i) const { + return data_.at(i+1).get_tree(); + } +}; +} |