diff options
| author | Claudius "keldu" Holeksa <mail@keldu.de> | 2023-12-03 23:06:43 +0100 |
|---|---|---|
| committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2023-12-03 23:08:41 +0100 |
| commit | efd94d1cf1a3709365c4c144875524819a6a15a3 (patch) | |
| tree | 852e86cb75150b3b6a4bab5a1e0dc10691d18e3e /c++/core/mcts.h | |
| parent | 0c991ef1d567cf87d7be6ab219b70767809b6397 (diff) | |
core: Tree container impl. Partially broken, fix on laptop
Diffstat (limited to 'c++/core/mcts.h')
| -rw-r--r-- | c++/core/mcts.h | 52 |
1 files changed, 42 insertions, 10 deletions
diff --git a/c++/core/mcts.h b/c++/core/mcts.h index f0f3ba5..8a8f5ea 100644 --- a/c++/core/mcts.h +++ b/c++/core/mcts.h @@ -3,18 +3,50 @@ #include "tree.h" namespace saw { -template<typename State> -struct mcts_value { - State state; -}; - -template<typename State> +template<typename T> class mcts_tree { private: - /** - * @todo - * Basically I need to a tree with tree<mcts_value<State>> - */ + 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(); + } }; } |
