From c52dccb9309befafb23e71c7a514314f464ab5c4 Mon Sep 17 00:00:00 2001 From: i-Madsen Date: Mon, 24 Jun 2024 16:06:17 -0500 Subject: [PATCH 1/4] Updates to Spades Now can get/set scores and set a bonus reward for winning/losing overall game to returns. --- open_spiel/games/spades/spades.cc | 35 +++++---- open_spiel/games/spades/spades.h | 35 +++++---- open_spiel/games/spades/spades_test.cc | 2 +- open_spiel/python/CMakeLists.txt | 4 +- open_spiel/python/pybind11/games_spades.cc | 82 ++++++++++++++++++++++ open_spiel/python/pybind11/games_spades.h | 25 +++++++ open_spiel/python/pybind11/pyspiel.cc | 2 + open_spiel/python/tests/games_sim_test.py | 11 +++ 8 files changed, 166 insertions(+), 30 deletions(-) create mode 100644 open_spiel/python/pybind11/games_spades.cc create mode 100644 open_spiel/python/pybind11/games_spades.h diff --git a/open_spiel/games/spades/spades.cc b/open_spiel/games/spades/spades.cc index 0b4edd4da1..f129ae79ee 100644 --- a/open_spiel/games/spades/spades.cc +++ b/open_spiel/games/spades/spades.cc @@ -40,14 +40,6 @@ #include "open_spiel/spiel_globals.h" #include "open_spiel/spiel_utils.h" -// Our preferred version of the double_dummy_solver defines a DDS_EXTERNAL -// macro to add a prefix to the exported symbols to avoid name clashes. -// In order to compile with versions of the double_dummy_solver which do not -// do this, we define DDS_EXTERNAL as an identity if it isn't already defined. -#ifndef DDS_EXTERNAL -#define DDS_EXTERNAL(x) x -#endif - namespace open_spiel { namespace spades { namespace { @@ -75,10 +67,9 @@ const GameType kGameType{/*short_name=*/"spades", {"mercy_threshold", GameParameter(-350)}, // Amount of points needed to win the game {"win_threshold", GameParameter(500)}, - // Parnership's current scores - // (can infer bags from last digit) - {"score_partnership_0", GameParameter(0)}, - {"score_partnership_1", GameParameter(0)}, + // The amount to add to reward return for winning + // (Will subtract for losing by mercy rule) + {"win_or_loss_bonus", GameParameter(200)}, // Number of played tricks in observation tensor {"num_tricks", GameParameter(2)}, }}; @@ -133,14 +124,13 @@ SpadesState::SpadesState(std::shared_ptr game, bool use_mercy_rule, int mercy_threshold, int win_threshold, - int score_partnership_0, - int score_partnership_1, + int win_or_loss_bonus, int num_tricks) : State(game), use_mercy_rule_(use_mercy_rule), mercy_threshold_(mercy_threshold), win_threshold_(win_threshold), - current_scores_{score_partnership_0, score_partnership_1}, + win_or_loss_bonus_(win_or_loss_bonus), num_tricks_(num_tricks) { possible_contracts_.fill(true); } @@ -578,6 +568,21 @@ Player SpadesState::CurrentPlayer() const { void SpadesState::ScoreUp() { std::array scores = Score(contracts_, num_player_tricks_, current_scores_); + // Check for if bonus reward should be applied for winning (or losing by mercy rule) + for (int pship = 0; pship < kNumPartnerships; ++pship){ + // Update overall scores + current_scores_[pship] += scores[pship]; + // Check for bonus/penalty to returns and if overall game is over + if (scores[pship] >= win_threshold_ && scores[pship] > scores[pship^1]){ + scores[pship] += win_or_loss_bonus_; // Add bonus reward for winning + is_game_over_ = true; + } + else if (mercy_threshold_ && scores[pship] <= mercy_threshold_ && scores[pship] < scores[pship^1]){ + scores[pship] -= win_or_loss_bonus_; // Subtract penalty reward for losing by mercy rule + is_game_over_ = true; + } + } + // Apply the partnership scores (with bonus/penalty applied) to corresponding players' returns for (int pl = 0; pl < kNumPlayers; ++pl) { returns_[pl] = scores[Partnership(pl)]; } diff --git a/open_spiel/games/spades/spades.h b/open_spiel/games/spades/spades.h index f2647043dc..730935cf8c 100644 --- a/open_spiel/games/spades/spades.h +++ b/open_spiel/games/spades/spades.h @@ -88,8 +88,7 @@ class SpadesState : public State { bool use_mercy_rule, int mercy_threshold, int win_threshold, - int score_partnership_0, - int score_partnership_1, + int win_or_loss_bonus, int num_tricks); Player CurrentPlayer() const override; std::string ActionToString(Player player, Action action) const override; @@ -125,6 +124,20 @@ class SpadesState : public State { // Current phase. int CurrentPhase() const { return static_cast(phase_); } + // Current overall partnership scores + std::array GetCurrentScores() const { return current_scores_; } + + // Set partnership scores + void SetCurrentScores(const std::array& new_scores) { + current_scores_ = new_scores; + } + + // Indicates if overall game is over (did a partnership meet win/lose condition) + void IsGameOver() const { return is_game_over_; } + + // Manually set the current player (used to specify starting player) + void SetCurrentPlayer(const int current_player) { current_player_ = current_player; } + protected: void DoApplyAction(Action action) override; @@ -138,7 +151,6 @@ class SpadesState : public State { void ApplyBiddingAction(int call); void ApplyPlayAction(int card); - void ComputeScoreByContract() const; void ScoreUp(); Trick& CurrentTrick() { return tricks_[num_cards_played_ / kNumPlayers]; } const Trick& CurrentTrick() const { @@ -153,9 +165,12 @@ class SpadesState : public State { const bool use_mercy_rule_; const int mercy_threshold_; const int win_threshold_; - const std::array current_scores_; + const int win_or_loss_bonus_; const int num_tricks_; + std::array current_scores_ = {0,0}; + bool is_game_over_ = false; + std::array num_player_tricks_ = {0,0,0,0}; int num_cards_played_ = 0; Player current_player_ = 0; // During the play phase, the hand to play. @@ -181,13 +196,12 @@ class SpadesGame : public Game { UseMercyRule(), MercyThreshold(), WinThreshold(), - PartnershipScore(0), - PartnershipScore(1), + WinOrLossBonus(), NumTricks())); } int NumPlayers() const override { return kNumPlayers; } - double MinUtility() const override { return -kMaxScore; } - double MaxUtility() const override { return kMaxScore; } + double MinUtility() const override { return -(kMaxScore + WinOrLossBonus()); } + double MaxUtility() const override { return kMaxScore + WinOrLossBonus(); } static int GetPlayTensorSize(int num_tricks) { return kNumBids * kNumPlayers // What each player's contract is @@ -228,10 +242,7 @@ class SpadesGame : public Game { int WinThreshold() const { return ParameterValue("win_threshold", 500); } - int PartnershipScore(int partnership) const { return partnership ? - ParameterValue("score_partnership_1", 0) : - ParameterValue("score_partnership_0", 0); - } + int WinOrLossBonus() const { return ParameterValue("win_or_loss_bonus", 200); } int NumTricks() const { return ParameterValue("num_tricks", 2); } }; diff --git a/open_spiel/games/spades/spades_test.cc b/open_spiel/games/spades/spades_test.cc index caf914b344..d199907dfe 100644 --- a/open_spiel/games/spades/spades_test.cc +++ b/open_spiel/games/spades/spades_test.cc @@ -34,7 +34,7 @@ void ScoringTests() { void BasicGameTests() { testing::LoadGameTest("spades"); testing::RandomSimTest(*LoadGame("spades"), 3); - testing::RandomSimTest(*LoadGame("spades(score_partnership_0=59,score_partnership_1=99)"), 3); + testing::RandomSimTest(*LoadGame("spades(use_mercy_rule=false,win_threshold=250,win_or_loss_bonus=1000)"), 3); } diff --git a/open_spiel/python/CMakeLists.txt b/open_spiel/python/CMakeLists.txt index 8e16fa86f6..2850c3e24e 100644 --- a/open_spiel/python/CMakeLists.txt +++ b/open_spiel/python/CMakeLists.txt @@ -105,6 +105,8 @@ set(PYTHON_BINDINGS ${PYTHON_BINDINGS} pybind11/games_leduc_poker.h pybind11/games_negotiation.cc pybind11/games_negotiation.h + pybind11/games_spades.cc + pybind11/games_spades.h pybind11/games_tarok.cc pybind11/games_tarok.h pybind11/games_tiny_bridge.cc @@ -267,7 +269,6 @@ if (OPEN_SPIEL_ENABLE_JAX) jax/nfsp_jax_test.py jax/opponent_shaping_jax_test.py jax/policy_gradient_jax_test.py - jax/cfr/jax_cfr_test.py algorithms/rnad/rnad_test.py coalitional_games/least_core_lagrangian_test.py mfg/algorithms/fictitious_play_test.py @@ -285,7 +286,6 @@ if (OPEN_SPIEL_ENABLE_PYTORCH) pytorch/policy_gradient_pytorch_test.py pytorch/ppo_pytorch_test.py pytorch/neurd_pytorch_test.py - mfg/algorithms/pytorch/mfg_proximal_policy_optimization_pytorch_test.py ) endif() diff --git a/open_spiel/python/pybind11/games_spades.cc b/open_spiel/python/pybind11/games_spades.cc new file mode 100644 index 0000000000..185066692e --- /dev/null +++ b/open_spiel/python/pybind11/games_spades.cc @@ -0,0 +1,82 @@ +// Copyright 2021 DeepMind Technologies Limited +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "open_spiel/python/pybind11/games_spades.h" + +#include + +#include "open_spiel/games/spades/spades.h" +#include "open_spiel/python/pybind11/pybind11.h" +#include "open_spiel/spiel.h" + +PYBIND11_SMART_HOLDER_TYPE_CASTERS(open_spiel::spades::SpadesGame); +PYBIND11_SMART_HOLDER_TYPE_CASTERS(open_spiel::spades::SpadesState); + +namespace open_spiel { + +namespace py = ::pybind11; +using spades::SpadesGame; +using spades::SpadesState; + +void init_pyspiel_games_spades(py::module& m) { + py::classh(m, "SpadesState") + .def("get_current_scores", &SpadesState::GetCurrentScores) + .def("set_current_scores", &SpadesState::SetCurrentScores) + .def("is_game_over", &SpadesState::IsGameOver) + .def("set_current_player", &SpadesState::SetCurrentPlayer) + .def("contract_indexes", &SpadesState::ContractIndexes) + .def("possible_contracts", &SpadesState::PossibleContracts) + .def("current_phase", &SpadesState::CurrentPhase) + .def("write_observation_tensor", + [](const SpadesState& state, + py::array_t array) { + py::buffer_info buf = array.request(); + SPIEL_CHECK_EQ(buf.ndim, 1); + SPIEL_CHECK_EQ(buf.strides.front(), buf.itemsize); + state.WriteObservationTensor( + state.CurrentPlayer(), + absl::MakeSpan(static_cast(buf.ptr), + buf.shape.front())); + }) + .def("private_observation_tensor", &SpadesState::PrivateObservationTensor) + .def("public_observation_tensor", &SpadesState::PublicObservationTensor) + // Pickle support + .def(py::pickle( + [](const SpadesState& state) { // __getstate__ + return SerializeGameAndState(*state.GetGame(), state); + }, + [](const std::string& data) { // __setstate__ + std::pair, std::unique_ptr> + game_and_state = DeserializeGameAndState(data); + return dynamic_cast(game_and_state.second.release()); + })); + + py::classh(m, "SpadesGame") + .def("num_possible_contracts", &SpadesGame::NumPossibleContracts) + .def("contract_string", &SpadesGame::ContractString) + .def("private_observation_tensor_size", + &SpadesGame::PrivateObservationTensorSize) + .def("public_observation_tensor_size", + &SpadesGame::PublicObservationTensorSize) + // Pickle support + .def(py::pickle( + [](std::shared_ptr game) { // __getstate__ + return game->ToString(); + }, + [](const std::string& data) { // __setstate__ + return std::dynamic_pointer_cast( + std::const_pointer_cast(LoadGame(data))); + })); +} +} // namespace open_spiel diff --git a/open_spiel/python/pybind11/games_spades.h b/open_spiel/python/pybind11/games_spades.h new file mode 100644 index 0000000000..a3b51521ab --- /dev/null +++ b/open_spiel/python/pybind11/games_spades.h @@ -0,0 +1,25 @@ +// Copyright 2021 DeepMind Technologies Limited +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef OPEN_SPIEL_PYTHON_PYBIND11_GAMES_SPADES_H_ +#define OPEN_SPIEL_PYTHON_PYBIND11_GAMES_SPADES_H_ + +#include "open_spiel/python/pybind11/pybind11.h" + +// Initialize the Python interface for spades. +namespace open_spiel { +void init_pyspiel_games_spades(::pybind11::module &m); +} + +#endif // OPEN_SPIEL_PYTHON_PYBIND11_GAMES_SPADES_H_ diff --git a/open_spiel/python/pybind11/pyspiel.cc b/open_spiel/python/pybind11/pyspiel.cc index b4f2066e7b..9059b929d0 100644 --- a/open_spiel/python/pybind11/pyspiel.cc +++ b/open_spiel/python/pybind11/pyspiel.cc @@ -42,6 +42,7 @@ #include "open_spiel/python/pybind11/games_kuhn_poker.h" #include "open_spiel/python/pybind11/games_leduc_poker.h" #include "open_spiel/python/pybind11/games_negotiation.h" +#include "open_spiel/python/pybind11/games_spades.h" #include "open_spiel/python/pybind11/games_tarok.h" #include "open_spiel/python/pybind11/games_tiny_bridge.h" #include "open_spiel/python/pybind11/games_trade_comm.h" @@ -653,6 +654,7 @@ PYBIND11_MODULE(pyspiel, m) { init_pyspiel_games_kuhn_poker(m); // Kuhn Poker game. init_pyspiel_games_leduc_poker(m); // Leduc poker game. init_pyspiel_games_negotiation(m); // Negotiation game. + init_pyspiel_games_spades(m); // Game-specific functions for spades. init_pyspiel_games_tarok(m); // Game-specific functions for tarok. init_pyspiel_games_tiny_bridge( m); // Game-specific functions for tiny_bridge. diff --git a/open_spiel/python/tests/games_sim_test.py b/open_spiel/python/tests/games_sim_test.py index 114f95d287..cc63a3cd86 100644 --- a/open_spiel/python/tests/games_sim_test.py +++ b/open_spiel/python/tests/games_sim_test.py @@ -359,6 +359,17 @@ def test_dots_and_boxes_with_notation(self): dbn = state.dbn_string() self.assertEqual(dbn, "110000000000") + def test_spades_get_and_set_scores(self): + game = pyspiel.load_game("spades") + state = game.new_initial_state() + # check that we can retrieve those cards + current_scores = state.get_current_scores() + self.assertEqual(current_scores, [0, 0]) + # now set scores to something else and check again + state.set_current_scores([59, 131]) + current_scores = state.get_current_scores() + self.assertEqual(current_scores, [59, 131]) + @parameterized.parameters( {"game_name": "blotto"}, {"game_name": "goofspiel"}, From 06ad3936fc5291402f93553997f92b79f9fa9308 Mon Sep 17 00:00:00 2001 From: i-Madsen Date: Tue, 2 Jul 2024 13:29:19 -0500 Subject: [PATCH 2/4] Spades update with style formatting --- open_spiel/games/spades/spades.h | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/open_spiel/games/spades/spades.h b/open_spiel/games/spades/spades.h index d7809e4116..4c8ef07a29 100644 --- a/open_spiel/games/spades/spades.h +++ b/open_spiel/games/spades/spades.h @@ -96,12 +96,9 @@ class Trick { // State of an in-play game. Can be any phase of the game. class SpadesState : public State { public: - SpadesState(std::shared_ptr game, - bool use_mercy_rule, - int mercy_threshold, - int win_threshold, - int win_or_loss_bonus, - int num_tricks); + SpadesState(std::shared_ptr game, bool use_mercy_rule, + int mercy_threshold, int win_threshold, + int win_or_loss_bonus, int num_tricks); Player CurrentPlayer() const override; std::string ActionToString(Player player, Action action) const override; std::string ToString() const override; From 1268cc0443f5b344c3f74fc4e6b174fa4c92e7fb Mon Sep 17 00:00:00 2001 From: i-Madsen Date: Tue, 2 Jul 2024 13:59:36 -0500 Subject: [PATCH 3/4] Adding updated playthrough for Spades --- .../integration_tests/playthroughs/spades.txt | 1424 ++++++++--------- 1 file changed, 712 insertions(+), 712 deletions(-) diff --git a/open_spiel/integration_tests/playthroughs/spades.txt b/open_spiel/integration_tests/playthroughs/spades.txt index 668932472b..9e19675260 100644 --- a/open_spiel/integration_tests/playthroughs/spades.txt +++ b/open_spiel/integration_tests/playthroughs/spades.txt @@ -6,7 +6,7 @@ GameType.information = Information.IMPERFECT_INFORMATION GameType.long_name = "Partnership Spades" GameType.max_num_players = 4 GameType.min_num_players = 4 -GameType.parameter_specification = ["mercy_threshold", "num_tricks", "score_partnership_0", "score_partnership_1", "use_mercy_rule", "win_threshold"] +GameType.parameter_specification = ["mercy_threshold", "num_tricks", "use_mercy_rule", "win_or_loss_bonus", "win_threshold"] GameType.provides_information_state_string = False GameType.provides_information_state_tensor = False GameType.provides_observation_string = True @@ -19,10 +19,10 @@ GameType.utility = Utility.GENERAL_SUM NumDistinctActions() = 66 PolicyTensorShape() = [66] MaxChanceOutcomes() = 52 -GetParameters() = {mercy_threshold=-350,num_tricks=2,score_partnership_0=0,score_partnership_1=0,use_mercy_rule=True,win_threshold=500} +GetParameters() = {mercy_threshold=-350,num_tricks=2,use_mercy_rule=True,win_or_loss_bonus=200,win_threshold=500} NumPlayers() = 4 -MinUtility() = -230.0 -MaxUtility() = 230.0 +MinUtility() = -430.0 +MaxUtility() = 430.0 UtilitySum() = None ObservationTensorShape() = [578] ObservationTensorLayout() = TensorLayout.CHW @@ -61,13 +61,13 @@ ChanceOutcomes() = [(0,0.0192308), (1,0.0192308), (2,0.0192308), (3,0.0192308), LegalActions() = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51] StringLegalActions() = ["C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "CT", "CJ", "CQ", "CK", "CA", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "DT", "DJ", "DQ", "DK", "DA", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "HT", "HJ", "HQ", "HK", "HA", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "ST", "SJ", "SQ", "SK", "SA"] -# Apply action "H5" -action: 29 +# Apply action "D8" +action: 19 # State 1 # S -# H 5 -# D +# H +# D 8 # C # S S # H H @@ -78,12 +78,12 @@ action: 29 # D # C IsTerminal() = False -History() = [29] -HistoryString() = "29" +History() = [19] +HistoryString() = "19" IsChanceNode() = True IsSimultaneousNode() = False CurrentPlayer() = -1 -ObservationString(0) = "S none\nH 5\nD none\nC none\n" +ObservationString(0) = "S none\nH none\nD 8\nC none\n" ObservationString(1) = "S none\nH none\nD none\nC none\n" ObservationString(2) = "S none\nH none\nD none\nC none\n" ObservationString(3) = "S none\nH none\nD none\nC none\n" @@ -91,1155 +91,1155 @@ ObservationTensor(0): zeros(578) ObservationTensor(1): zeros(578) ObservationTensor(2): zeros(578) ObservationTensor(3): zeros(578) -ChanceOutcomes() = [(0,0.0196078), (1,0.0196078), (2,0.0196078), (3,0.0196078), (4,0.0196078), (5,0.0196078), (6,0.0196078), (7,0.0196078), (8,0.0196078), (9,0.0196078), (10,0.0196078), (11,0.0196078), (12,0.0196078), (13,0.0196078), (14,0.0196078), (15,0.0196078), (16,0.0196078), (17,0.0196078), (18,0.0196078), (19,0.0196078), (20,0.0196078), (21,0.0196078), (22,0.0196078), (23,0.0196078), (24,0.0196078), (25,0.0196078), (26,0.0196078), (27,0.0196078), (28,0.0196078), (30,0.0196078), (31,0.0196078), (32,0.0196078), (33,0.0196078), (34,0.0196078), (35,0.0196078), (36,0.0196078), (37,0.0196078), (38,0.0196078), (39,0.0196078), (40,0.0196078), (41,0.0196078), (42,0.0196078), (43,0.0196078), (44,0.0196078), (45,0.0196078), (46,0.0196078), (47,0.0196078), (48,0.0196078), (49,0.0196078), (50,0.0196078), (51,0.0196078)] -LegalActions() = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51] -StringLegalActions() = ["C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "CT", "CJ", "CQ", "CK", "CA", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "DT", "DJ", "DQ", "DK", "DA", "H2", "H3", "H4", "H6", "H7", "H8", "H9", "HT", "HJ", "HQ", "HK", "HA", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "ST", "SJ", "SQ", "SK", "SA"] +ChanceOutcomes() = [(0,0.0196078), (1,0.0196078), (2,0.0196078), (3,0.0196078), (4,0.0196078), (5,0.0196078), (6,0.0196078), (7,0.0196078), (8,0.0196078), (9,0.0196078), (10,0.0196078), (11,0.0196078), (12,0.0196078), (13,0.0196078), (14,0.0196078), (15,0.0196078), (16,0.0196078), (17,0.0196078), (18,0.0196078), (20,0.0196078), (21,0.0196078), (22,0.0196078), (23,0.0196078), (24,0.0196078), (25,0.0196078), (26,0.0196078), (27,0.0196078), (28,0.0196078), (29,0.0196078), (30,0.0196078), (31,0.0196078), (32,0.0196078), (33,0.0196078), (34,0.0196078), (35,0.0196078), (36,0.0196078), (37,0.0196078), (38,0.0196078), (39,0.0196078), (40,0.0196078), (41,0.0196078), (42,0.0196078), (43,0.0196078), (44,0.0196078), (45,0.0196078), (46,0.0196078), (47,0.0196078), (48,0.0196078), (49,0.0196078), (50,0.0196078), (51,0.0196078)] +LegalActions() = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51] +StringLegalActions() = ["C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "CT", "CJ", "CQ", "CK", "CA", "D2", "D3", "D4", "D5", "D6", "D7", "D9", "DT", "DJ", "DQ", "DK", "DA", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "HT", "HJ", "HQ", "HK", "HA", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "ST", "SJ", "SQ", "SK", "SA"] -# Apply action "H2" -action: 26 +# Apply action "D7" +action: 18 # State 2 -# Apply action "H9" -action: 33 +# Apply action "SJ" +action: 48 # State 3 -# Apply action "S4" -action: 41 +# Apply action "S6" +action: 43 # State 4 -# Apply action "C7" -action: 5 +# Apply action "CA" +action: 12 # State 5 -# Apply action "D2" -action: 13 +# Apply action "H2" +action: 26 # State 6 -# Apply action "SJ" -action: 48 +# Apply action "C2" +action: 0 # State 7 -# Apply action "S2" -action: 39 +# Apply action "C9" +action: 7 # State 8 # Apply action "H4" action: 28 # State 9 -# Apply action "DK" -action: 24 +# Apply action "C3" +action: 1 # State 10 -# Apply action "H7" -action: 31 +# Apply action "S3" +action: 40 # State 11 -# Apply action "D3" -action: 14 +# Apply action "DT" +action: 21 # State 12 -# Apply action "CQ" -action: 10 +# Apply action "D5" +action: 16 # State 13 -# Apply action "S7" -action: 44 +# Apply action "ST" +action: 47 # State 14 -# Apply action "DQ" -action: 23 +# Apply action "H5" +action: 29 # State 15 -# Apply action "H6" -action: 30 +# Apply action "HT" +action: 34 # State 16 -# Apply action "SQ" -action: 49 +# Apply action "D9" +action: 20 # State 17 -# Apply action "HK" -action: 37 +# Apply action "SA" +action: 51 # State 18 -# Apply action "C4" -action: 2 +# Apply action "HQ" +action: 36 # State 19 -# Apply action "S8" -action: 45 +# Apply action "D3" +action: 14 # State 20 -# Apply action "C8" -action: 6 +# Apply action "SK" +action: 50 # State 21 -# Apply action "D8" -action: 19 +# Apply action "DA" +action: 25 # State 22 -# Apply action "HJ" -action: 35 +# Apply action "C6" +action: 4 # State 23 -# Apply action "SK" -action: 50 +# Apply action "C7" +action: 5 # State 24 -# Apply action "C9" -action: 7 +# Apply action "S8" +action: 45 # State 25 -# Apply action "C6" -action: 4 +# Apply action "D4" +action: 15 # State 26 -# Apply action "S5" -action: 42 +# Apply action "HJ" +action: 35 # State 27 -# Apply action "CT" -action: 8 +# Apply action "S9" +action: 46 # State 28 -# Apply action "C3" -action: 1 +# Apply action "S2" +action: 39 # State 29 -# Apply action "C5" -action: 3 +# Apply action "S4" +action: 41 # State 30 -# Apply action "H8" -action: 32 +# Apply action "C4" +action: 2 # State 31 -# Apply action "H3" -action: 27 +# Apply action "CJ" +action: 9 # State 32 -# Apply action "HT" -action: 34 +# Apply action "D2" +action: 13 # State 33 -# Apply action "SA" -action: 51 +# Apply action "D6" +action: 17 # State 34 -# Apply action "CK" -action: 11 +# Apply action "S5" +action: 42 # State 35 -# Apply action "C2" -action: 0 +# Apply action "HA" +action: 38 # State 36 -# Apply action "D7" -action: 18 +# Apply action "HK" +action: 37 # State 37 -# Apply action "D9" -action: 20 +# Apply action "DK" +action: 24 # State 38 -# Apply action "HQ" -action: 36 +# Apply action "S7" +action: 44 # State 39 -# Apply action "ST" -action: 47 +# Apply action "H7" +action: 31 # State 40 -# Apply action "HA" -action: 38 +# Apply action "CQ" +action: 10 # State 41 -# Apply action "DA" -action: 25 +# Apply action "DQ" +action: 23 # State 42 -# Apply action "D6" -action: 17 +# Apply action "SQ" +action: 49 # State 43 -# Apply action "CA" -action: 12 +# Apply action "H8" +action: 32 # State 44 -# Apply action "S9" -action: 46 +# Apply action "CT" +action: 8 # State 45 -# Apply action "S6" -action: 43 +# Apply action "C5" +action: 3 # State 46 -# Apply action "CJ" -action: 9 +# Apply action "H3" +action: 27 # State 47 -# Apply action "D4" -action: 15 +# Apply action "DJ" +action: 22 # State 48 -# Apply action "D5" -action: 16 +# Apply action "H6" +action: 30 # State 49 -# Apply action "DJ" -action: 22 +# Apply action "C8" +action: 6 # State 50 -# Apply action "DT" -action: 21 +# Apply action "CK" +action: 11 # State 51 -# Apply action "S3" -action: 40 +# Apply action "H9" +action: 33 # State 52 -# S Q9 -# H AT54 -# D 75 -# C Q9873 -# S KT8432 S A76 -# H 63 H K2 -# D 43 D AKJ982 -# C AT2 C 65 -# S J5 -# H QJ987 -# D QT6 -# C KJ4 +# S K82 +# H K64 +# D 9852 +# C AQT +# S 96 S AT4 +# H AT987 H 2 +# D JT3 D AKQ764 +# C J97 C 853 +# S QJ753 +# H QJ53 +# D +# C K642 IsTerminal() = False -History() = [29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40] -HistoryString() = "29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40" +History() = [19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33] +HistoryString() = "19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33" IsChanceNode() = False IsSimultaneousNode() = False CurrentPlayer() = 0 -ObservationString(0) = "S Q9\nH AT54\nD 75\nC Q9873\n" -ObservationString(1) = "S A76\nH K2\nD AKJ982\nC 65\n" -ObservationString(2) = "S J5\nH QJ987\nD QT6\nC KJ4\n" -ObservationString(3) = "S KT8432\nH 63\nD 43\nC AT2\n" -ObservationTensor(0): binvec(578, 0x2000000000000004720a00c22024000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) -ObservationTensor(1): binvec(578, 0x20000000000000018041ae004181000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) -ObservationTensor(2): binvec(578, 0x20000000000000020504501d8208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) -ObservationTensor(3): binvec(578, 0x200000000000000808b001201c52000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) +ObservationString(0) = "S K82\nH K64\nD 9852\nC AQT\n" +ObservationString(1) = "S AT4\nH 2\nD AKQ764\nC 853\n" +ObservationString(2) = "S QJ753\nH QJ53\nD none\nC K642\n" +ObservationString(3) = "S 96\nH AT987\nD JT3\nC J97\n" +ObservationTensor(0): binvec(578, 0x20000000000000000ac980a05042000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) +ObservationTensor(1): binvec(578, 0x200000000000000520161e000411000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) +ObservationTensor(2): binvec(578, 0x200000000000000a810001418a8c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) +ObservationTensor(3): binvec(578, 0x20000000000000005420601e2120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) Rewards() = [0, 0, 0, 0] Returns() = [0, 0, 0, 0] LegalActions() = [52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65] StringLegalActions() = ["Nil", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"] -# Apply action "11" -action: 63 +# Apply action "2" +action: 54 # State 53 -# S Q9 -# H AT54 -# D 75 -# C Q9873 -# S KT8432 S A76 -# H 63 H K2 -# D 43 D AKJ982 -# C AT2 C 65 -# S J5 -# H QJ987 -# D QT6 -# C KJ4 +# S K82 +# H K64 +# D 9852 +# C AQT +# S 96 S AT4 +# H AT987 H 2 +# D JT3 D AKQ764 +# C J97 C 853 +# S QJ753 +# H QJ53 +# D +# C K642 # # North East South West -# 11 +# 2 IsTerminal() = False -History() = [29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63] -HistoryString() = "29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63" +History() = [19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54] +HistoryString() = "19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54" IsChanceNode() = False IsSimultaneousNode() = False CurrentPlayer() = 1 -ObservationString(0) = "S Q9\nH AT54\nD 75\nC Q9873\n\nNorth East South West \n11 " -ObservationString(1) = "S A76\nH K2\nD AKJ982\nC 65\n\nNorth East South West \n11 ?" -ObservationString(2) = "S J5\nH QJ987\nD QT6\nC KJ4\n\nNorth East South West \n11 " -ObservationString(3) = "S KT8432\nH 63\nD 43\nC AT2\n\nNorth East South West \n11 " -ObservationTensor(0): binvec(578, 0x2001000000000004720a00c22024000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) -ObservationTensor(1): binvec(578, 0x20010000000000018041ae004181000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) -ObservationTensor(2): binvec(578, 0x20010000000000020504501d8208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) -ObservationTensor(3): binvec(578, 0x200100000000000808b001201c52000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) +ObservationString(0) = "S K82\nH K64\nD 9852\nC AQT\n\nNorth East South West \n2 " +ObservationString(1) = "S AT4\nH 2\nD AKQ764\nC 853\n\nNorth East South West \n2 ?" +ObservationString(2) = "S QJ753\nH QJ53\nD none\nC K642\n\nNorth East South West \n2 " +ObservationString(3) = "S 96\nH AT987\nD JT3\nC J97\n\nNorth East South West \n2 " +ObservationTensor(0): binvec(578, 0x22000000000000000ac980a05042000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) +ObservationTensor(1): binvec(578, 0x220000000000000520161e000411000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) +ObservationTensor(2): binvec(578, 0x220000000000000a810001418a8c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) +ObservationTensor(3): binvec(578, 0x22000000000000005420601e2120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) Rewards() = [0, 0, 0, 0] Returns() = [0, 0, 0, 0] LegalActions() = [52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65] StringLegalActions() = ["Nil", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"] -# Apply action "Nil" -action: 52 +# Apply action "12" +action: 64 # State 54 -# S Q9 -# H AT54 -# D 75 -# C Q9873 -# S KT8432 S A76 -# H 63 H K2 -# D 43 D AKJ982 -# C AT2 C 65 -# S J5 -# H QJ987 -# D QT6 -# C KJ4 +# S K82 +# H K64 +# D 9852 +# C AQT +# S 96 S AT4 +# H AT987 H 2 +# D JT3 D AKQ764 +# C J97 C 853 +# S QJ753 +# H QJ53 +# D +# C K642 # # North East South West -# 11 Nil +# 2 12 IsTerminal() = False -History() = [29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52] -HistoryString() = "29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52" +History() = [19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64] +HistoryString() = "19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64" IsChanceNode() = False IsSimultaneousNode() = False CurrentPlayer() = 2 -ObservationString(0) = "S Q9\nH AT54\nD 75\nC Q9873\n\nNorth East South West \n11 Nil " -ObservationString(1) = "S A76\nH K2\nD AKJ982\nC 65\n\nNorth East South West \n11 Nil " -ObservationString(2) = "S J5\nH QJ987\nD QT6\nC KJ4\n\nNorth East South West \n11 Nil ?" -ObservationString(3) = "S KT8432\nH 63\nD 43\nC AT2\n\nNorth East South West \n11 Nil " -ObservationTensor(0): binvec(578, 0x2001200000000004720a00c22024000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) -ObservationTensor(1): binvec(578, 0x20012000000000018041ae004181000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) -ObservationTensor(2): binvec(578, 0x20012000000000020504501d8208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) -ObservationTensor(3): binvec(578, 0x200120000000000808b001201c52000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) +ObservationString(0) = "S K82\nH K64\nD 9852\nC AQT\n\nNorth East South West \n2 12 " +ObservationString(1) = "S AT4\nH 2\nD AKQ764\nC 853\n\nNorth East South West \n2 12 " +ObservationString(2) = "S QJ753\nH QJ53\nD none\nC K642\n\nNorth East South West \n2 12 ?" +ObservationString(3) = "S 96\nH AT987\nD JT3\nC J97\n\nNorth East South West \n2 12 " +ObservationTensor(0): binvec(578, 0x22000002000000000ac980a05042000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) +ObservationTensor(1): binvec(578, 0x220000020000000520161e000411000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) +ObservationTensor(2): binvec(578, 0x220000020000000a810001418a8c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) +ObservationTensor(3): binvec(578, 0x22000002000000005420601e2120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) Rewards() = [0, 0, 0, 0] Returns() = [0, 0, 0, 0] -LegalActions() = [52, 53, 54] -StringLegalActions() = ["Nil", "1", "2"] +LegalActions() = [52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63] +StringLegalActions() = ["Nil", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"] -# Apply action "2" -action: 54 +# Apply action "5" +action: 57 # State 55 -# S Q9 -# H AT54 -# D 75 -# C Q9873 -# S KT8432 S A76 -# H 63 H K2 -# D 43 D AKJ982 -# C AT2 C 65 -# S J5 -# H QJ987 -# D QT6 -# C KJ4 +# S K82 +# H K64 +# D 9852 +# C AQT +# S 96 S AT4 +# H AT987 H 2 +# D JT3 D AKQ764 +# C J97 C 853 +# S QJ753 +# H QJ53 +# D +# C K642 # # North East South West -# 11 Nil 2 +# 2 12 5 IsTerminal() = False -History() = [29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54] -HistoryString() = "29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54" +History() = [19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57] +HistoryString() = "19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57" IsChanceNode() = False IsSimultaneousNode() = False CurrentPlayer() = 3 -ObservationString(0) = "S Q9\nH AT54\nD 75\nC Q9873\n\nNorth East South West \n11 Nil 2 " -ObservationString(1) = "S A76\nH K2\nD AKJ982\nC 65\n\nNorth East South West \n11 Nil 2 " -ObservationString(2) = "S J5\nH QJ987\nD QT6\nC KJ4\n\nNorth East South West \n11 Nil 2 " -ObservationString(3) = "S KT8432\nH 63\nD 43\nC AT2\n\nNorth East South West \n11 Nil 2 \n?" -ObservationTensor(0): binvec(578, 0x2001200020000004720a00c22024000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) -ObservationTensor(1): binvec(578, 0x20012000200000018041ae004181000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) -ObservationTensor(2): binvec(578, 0x20012000200000020504501d8208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) -ObservationTensor(3): binvec(578, 0x200120002000000808b001201c52000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) +ObservationString(0) = "S K82\nH K64\nD 9852\nC AQT\n\nNorth East South West \n2 12 5 " +ObservationString(1) = "S AT4\nH 2\nD AKQ764\nC 853\n\nNorth East South West \n2 12 5 " +ObservationString(2) = "S QJ753\nH QJ53\nD none\nC K642\n\nNorth East South West \n2 12 5 " +ObservationString(3) = "S 96\nH AT987\nD JT3\nC J97\n\nNorth East South West \n2 12 5 \n?" +ObservationTensor(0): binvec(578, 0x22000002040000000ac980a05042000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) +ObservationTensor(1): binvec(578, 0x220000020400000520161e000411000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) +ObservationTensor(2): binvec(578, 0x220000020400000a810001418a8c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) +ObservationTensor(3): binvec(578, 0x22000002040000005420601e2120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) Rewards() = [0, 0, 0, 0] Returns() = [0, 0, 0, 0] -LegalActions() = [52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65] -StringLegalActions() = ["Nil", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"] +LegalActions() = [52, 53] +StringLegalActions() = ["Nil", "1"] -# Apply action "6" -action: 58 +# Apply action "1" +action: 53 # State 56 -# S Q9 -# H AT54 -# D 75 -# C Q9873 -# S KT8432 S A76 -# H 63 H K2 -# D 43 D AKJ982 -# C AT2 C 65 -# S J5 -# H QJ987 -# D QT6 -# C KJ4 +# S K82 +# H K64 +# D 9852 +# C AQT +# S 96 S AT4 +# H AT987 H 2 +# D JT3 D AKQ764 +# C J97 C 853 +# S QJ753 +# H QJ53 +# D +# C K642 # # North East South West -# 11 Nil 2 6 +# 2 12 5 1 IsTerminal() = False -History() = [29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54, 58] -HistoryString() = "29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54, 58" +History() = [19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57, 53] +HistoryString() = "19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57, 53" IsChanceNode() = False IsSimultaneousNode() = False CurrentPlayer() = 0 -ObservationString(0) = "S Q9\nH AT54\nD 75\nC Q9873\n\nNorth East South West \n11 Nil 2 6 " -ObservationString(1) = "S A76\nH K2\nD AKJ982\nC 65\n\nNorth East South West \n11 Nil 2 6 " -ObservationString(2) = "S J5\nH QJ987\nD QT6\nC KJ4\n\nNorth East South West \n11 Nil 2 6 " -ObservationString(3) = "S KT8432\nH 63\nD 43\nC AT2\n\nNorth East South West \n11 Nil 2 6 " -ObservationTensor(0): binvec(578, 0x1001200020000804720a00c22024000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) -ObservationTensor(1): binvec(578, 0x10012000200008018041ae004181000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) -ObservationTensor(2): binvec(578, 0x10012000200008020504501d8208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) -ObservationTensor(3): binvec(578, 0x100120002000080808b001201c52000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) +ObservationString(0) = "S K82\nH K64\nD 9852\nC AQT\n\nNorth East South West \n2 12 5 1 " +ObservationString(1) = "S AT4\nH 2\nD AKQ764\nC 853\n\nNorth East South West \n2 12 5 1 " +ObservationString(2) = "S QJ753\nH QJ53\nD none\nC K642\n\nNorth East South West \n2 12 5 1 " +ObservationString(3) = "S 96\nH AT987\nD JT3\nC J97\n\nNorth East South West \n2 12 5 1 " +ObservationTensor(0): binvec(578, 0x12000002040100000ac980a05042000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) +ObservationTensor(1): binvec(578, 0x120000020401000520161e000411000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) +ObservationTensor(2): binvec(578, 0x120000020401000a810001418a8c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) +ObservationTensor(3): binvec(578, 0x12000002040100005420601e2120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) Rewards() = [0, 0, 0, 0] Returns() = [0, 0, 0, 0] -LegalActions() = [1, 5, 6, 7, 10, 16, 18, 28, 29, 34, 38] -StringLegalActions() = ["C3", "C7", "C8", "C9", "CQ", "D5", "D7", "H4", "H5", "HT", "HA"] +LegalActions() = [8, 10, 12, 13, 16, 19, 20, 28, 30, 37] +StringLegalActions() = ["CT", "CQ", "CA", "D2", "D5", "D8", "D9", "H4", "H6", "HK"] -# Apply action "C7" -action: 5 +# Apply action "D8" +action: 19 # State 57 -# S Q9 -# H AT54 -# D 75 -# C Q983 -# S KT8432 S A76 -# H 63 H K2 -# D 43 D AKJ982 -# C AT2 C 65 -# S J5 -# H QJ987 -# D QT6 -# C KJ4 +# S K82 +# H K64 +# D 952 +# C AQT +# S 96 S AT4 +# H AT987 H 2 +# D JT3 D AKQ764 +# C J97 C 853 +# S QJ753 +# H QJ53 +# D +# C K642 # # North East South West -# 11 Nil 2 6 +# 2 12 5 1 # # N E S W N E S -# C7 +# D8 # # Tricks taken: # # North East South West # 0 0 0 0 IsTerminal() = False -History() = [29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54, 58, 5] -HistoryString() = "29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54, 58, 5" +History() = [19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57, 53, 19] +HistoryString() = "19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57, 53, 19" IsChanceNode() = False IsSimultaneousNode() = False CurrentPlayer() = 1 -ObservationString(0) = "S Q9\nH AT54\nD 75\nC Q983\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 \n\nTricks taken:\n\nNorth East South West\n0 0 0 0 \n" -ObservationString(1) = "S A76\nH K2\nD AKJ982\nC 65\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 \n\nTricks taken:\n\nNorth East South West\n0 0 0 0 \n" -ObservationString(2) = "S J5\nH QJ987\nD QT6\nC KJ4\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 \n\nTricks taken:\n\nNorth East South West\n0 0 0 0 \n" -ObservationString(3) = "S KT8432\nH 63\nD 43\nC AT2\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 \n\nTricks taken:\n\nNorth East South West\n0 0 0 0 \n" -ObservationTensor(0): binvec(578, 0x1001200020000804320a00c22024040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008004002001000) -ObservationTensor(1): binvec(578, 0x10012000200008018041ae004181000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008004002001000) -ObservationTensor(2): binvec(578, 0x10012000200008020504501d8208000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000008004002001000) -ObservationTensor(3): binvec(578, 0x100120002000080808b001201c52000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008004002001000) +ObservationString(0) = "S K82\nH K64\nD 952\nC AQT\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 \n\nTricks taken:\n\nNorth East South West\n0 0 0 0 \n" +ObservationString(1) = "S AT4\nH 2\nD AKQ764\nC 853\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 \n\nTricks taken:\n\nNorth East South West\n0 0 0 0 \n" +ObservationString(2) = "S QJ753\nH QJ53\nD none\nC K642\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 \n\nTricks taken:\n\nNorth East South West\n0 0 0 0 \n" +ObservationString(3) = "S 96\nH AT987\nD JT3\nC J97\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 \n\nTricks taken:\n\nNorth East South West\n0 0 0 0 \n" +ObservationTensor(0): binvec(578, 0x12000002040100000ac880a05042000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008004002001000) +ObservationTensor(1): binvec(578, 0x120000020401000520161e000411000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000008004002001000) +ObservationTensor(2): binvec(578, 0x120000020401000a810001418a8c000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000008004002001000) +ObservationTensor(3): binvec(578, 0x12000002040100005420601e2120000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000008004002001000) Rewards() = [0, 0, 0, 0] Returns() = [0, 0, 0, 0] -LegalActions() = [3, 4] -StringLegalActions() = ["C5", "C6"] +LegalActions() = [15, 17, 18, 23, 24, 25] +StringLegalActions() = ["D4", "D6", "D7", "DQ", "DK", "DA"] -# Apply action "C5" -action: 3 +# Apply action "D6" +action: 17 # State 58 -# S Q9 -# H AT54 -# D 75 -# C Q983 -# S KT8432 S A76 -# H 63 H K2 -# D 43 D AKJ982 -# C AT2 C 6 -# S J5 -# H QJ987 -# D QT6 -# C KJ4 +# S K82 +# H K64 +# D 952 +# C AQT +# S 96 S AT4 +# H AT987 H 2 +# D JT3 D AKQ74 +# C J97 C 853 +# S QJ753 +# H QJ53 +# D +# C K642 # # North East South West -# 11 Nil 2 6 +# 2 12 5 1 # # N E S W N E S -# C7 C5 +# D8 D6 # # Tricks taken: # # North East South West # 0 0 0 0 IsTerminal() = False -History() = [29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54, 58, 5, 3] -HistoryString() = "29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54, 58, 5, 3" +History() = [19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57, 53, 19, 17] +HistoryString() = "19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57, 53, 19, 17" IsChanceNode() = False IsSimultaneousNode() = False CurrentPlayer() = 2 -ObservationString(0) = "S Q9\nH AT54\nD 75\nC Q983\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 \n\nTricks taken:\n\nNorth East South West\n0 0 0 0 \n" -ObservationString(1) = "S A76\nH K2\nD AKJ982\nC 6\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 \n\nTricks taken:\n\nNorth East South West\n0 0 0 0 \n" -ObservationString(2) = "S J5\nH QJ987\nD QT6\nC KJ4\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 \n\nTricks taken:\n\nNorth East South West\n0 0 0 0 \n" -ObservationString(3) = "S KT8432\nH 63\nD 43\nC AT2\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 \n\nTricks taken:\n\nNorth East South West\n0 0 0 0 \n" -ObservationTensor(0): binvec(578, 0x1001200020000804320a00c22024040000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008004002001000) -ObservationTensor(1): binvec(578, 0x10012000200008008041ae004181100000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008004002001000) -ObservationTensor(2): binvec(578, 0x10012000200008020504501d8208000000000000000000000000000400000000000100000000000000000000000000000000000000000000000000000000000000008004002001000) -ObservationTensor(3): binvec(578, 0x100120002000080808b001201c52000000000000004000000000001000000000000000000000000000000000000000000000000000000000000000000000000000008004002001000) +ObservationString(0) = "S K82\nH K64\nD 952\nC AQT\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 \n\nTricks taken:\n\nNorth East South West\n0 0 0 0 \n" +ObservationString(1) = "S AT4\nH 2\nD AKQ74\nC 853\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 \n\nTricks taken:\n\nNorth East South West\n0 0 0 0 \n" +ObservationString(2) = "S QJ753\nH QJ53\nD none\nC K642\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 \n\nTricks taken:\n\nNorth East South West\n0 0 0 0 \n" +ObservationString(3) = "S 96\nH AT987\nD JT3\nC J97\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 \n\nTricks taken:\n\nNorth East South West\n0 0 0 0 \n" +ObservationTensor(0): binvec(578, 0x12000002040100000ac880a05042000010000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000008004002001000) +ObservationTensor(1): binvec(578, 0x120000020401000520121e000411000040000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000008004002001000) +ObservationTensor(2): binvec(578, 0x120000020401000a810001418a8c000000000000000000000000000000100000000000040000000000000000000000000000000000000000000000000000000000008004002001000) +ObservationTensor(3): binvec(578, 0x12000002040100005420601e2120000000000000000001000000000000400000000000000000000000000000000000000000000000000000000000000000000000008004002001000) Rewards() = [0, 0, 0, 0] Returns() = [0, 0, 0, 0] -LegalActions() = [2, 9, 11] -StringLegalActions() = ["C4", "CJ", "CK"] +LegalActions() = [0, 2, 4, 11, 27, 29, 35, 36, 40, 42, 44, 48, 49] +StringLegalActions() = ["C2", "C4", "C6", "CK", "H3", "H5", "HJ", "HQ", "S3", "S5", "S7", "SJ", "SQ"] -# Apply action "C4" -action: 2 +# Apply action "S5" +action: 42 # State 59 -# S Q9 -# H AT54 -# D 75 -# C Q983 -# S KT8432 S A76 -# H 63 H K2 -# D 43 D AKJ982 -# C AT2 C 6 -# S J5 -# H QJ987 -# D QT6 -# C KJ +# S K82 +# H K64 +# D 952 +# C AQT +# S 96 S AT4 +# H AT987 H 2 +# D JT3 D AKQ74 +# C J97 C 853 +# S QJ73 +# H QJ53 +# D +# C K642 # # North East South West -# 11 Nil 2 6 +# 2 12 5 1 # # N E S W N E S -# C7 C5 C4 +# D8 D6 S5 # # Tricks taken: # # North East South West # 0 0 0 0 IsTerminal() = False -History() = [29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54, 58, 5, 3, 2] -HistoryString() = "29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54, 58, 5, 3, 2" +History() = [19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57, 53, 19, 17, 42] +HistoryString() = "19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57, 53, 19, 17, 42" IsChanceNode() = False IsSimultaneousNode() = False CurrentPlayer() = 3 -ObservationString(0) = "S Q9\nH AT54\nD 75\nC Q983\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 \n\nTricks taken:\n\nNorth East South West\n0 0 0 0 \n" -ObservationString(1) = "S A76\nH K2\nD AKJ982\nC 6\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 \n\nTricks taken:\n\nNorth East South West\n0 0 0 0 \n" -ObservationString(2) = "S J5\nH QJ987\nD QT6\nC KJ\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 \n\nTricks taken:\n\nNorth East South West\n0 0 0 0 \n" -ObservationString(3) = "S KT8432\nH 63\nD 43\nC AT2\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 \n\nTricks taken:\n\nNorth East South West\n0 0 0 0 \n" -ObservationTensor(0): binvec(578, 0x1001200020000804320a00c22024040000000000010000000000002000000000000000000000000000000000000000000000000000000000000000000000000000008004002001000) -ObservationTensor(1): binvec(578, 0x10012000200008008041ae004181100000000000020000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008004002001000) -ObservationTensor(2): binvec(578, 0x10012000200008000504501d8208200000000000000000000000000400000000000100000000000000000000000000000000000000000000000000000000000000008004002001000) -ObservationTensor(3): binvec(578, 0x100120002000080808b001201c52000000000000004000000000001000000000000200000000000000000000000000000000000000000000000000000000000000008004002001000) +ObservationString(0) = "S K82\nH K64\nD 952\nC AQT\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 \n\nTricks taken:\n\nNorth East South West\n0 0 0 0 \n" +ObservationString(1) = "S AT4\nH 2\nD AKQ74\nC 853\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 \n\nTricks taken:\n\nNorth East South West\n0 0 0 0 \n" +ObservationString(2) = "S QJ73\nH QJ53\nD none\nC K642\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 \n\nTricks taken:\n\nNorth East South West\n0 0 0 0 \n" +ObservationString(3) = "S 96\nH AT987\nD JT3\nC J97\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 \n\nTricks taken:\n\nNorth East South West\n0 0 0 0 \n" +ObservationTensor(0): binvec(578, 0x12000002040100000ac880a05042000010000000000004000000000000000000200000000000000000000000000000000000000000000000000000000000000000008004002001000) +ObservationTensor(1): binvec(578, 0x120000020401000520121e000411000040000000000000000002000000000000000000010000000000000000000000000000000000000000000000000000000000008004002001000) +ObservationTensor(2): binvec(578, 0x120000020401000a81000141888c000000000020000000000000000000100000000000040000000000000000000000000000000000000000000000000000000000008004002001000) +ObservationTensor(3): binvec(578, 0x12000002040100005420601e2120000000000000000001000000000000400000000000000000020000000000000000000000000000000000000000000000000000008004002001000) Rewards() = [0, 0, 0, 0] Returns() = [0, 0, 0, 0] -LegalActions() = [0, 8, 12] -StringLegalActions() = ["C2", "CT", "CA"] +LegalActions() = [14, 21, 22] +StringLegalActions() = ["D3", "DT", "DJ"] -# Apply action "CA" -action: 12 +# Apply action "DJ" +action: 22 # State 60 -# S Q9 -# H AT54 -# D 75 -# C Q983 -# S KT8432 S A76 -# H 63 H K2 -# D 43 D AKJ982 -# C T2 C 6 -# S J5 -# H QJ987 -# D QT6 -# C KJ +# S K82 +# H K64 +# D 952 +# C AQT +# S 96 S AT4 +# H AT987 H 2 +# D T3 D AKQ74 +# C J97 C 853 +# S QJ73 +# H QJ53 +# D +# C K642 # # North East South West -# 11 Nil 2 6 +# 2 12 5 1 # # N E S W N E S -# C7 C5 C4 CA +# D8 D6 S5 DJ # # Tricks taken: # # North East South West -# 0 0 0 1 +# 0 0 1 0 IsTerminal() = False -History() = [29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54, 58, 5, 3, 2, 12] -HistoryString() = "29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54, 58, 5, 3, 2, 12" +History() = [19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57, 53, 19, 17, 42, 22] +HistoryString() = "19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57, 53, 19, 17, 42, 22" IsChanceNode() = False IsSimultaneousNode() = False -CurrentPlayer() = 3 -ObservationString(0) = "S Q9\nH AT54\nD 75\nC Q983\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n\nTricks taken:\n\nNorth East South West\n0 0 0 1 \n" -ObservationString(1) = "S A76\nH K2\nD AKJ982\nC 6\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n\nTricks taken:\n\nNorth East South West\n0 0 0 1 \n" -ObservationString(2) = "S J5\nH QJ987\nD QT6\nC KJ\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n\nTricks taken:\n\nNorth East South West\n0 0 0 1 \n" -ObservationString(3) = "S KT8432\nH 63\nD 43\nC T2\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n\nTricks taken:\n\nNorth East South West\n0 0 0 1 \n" -ObservationTensor(0): binvec(578, 0x1001200020000804320a00c22024000000000000000000000000000000000000000000000000000004000000000001000000000000200000000000000080000000008004002000800) -ObservationTensor(1): binvec(578, 0x10012000200008008041ae004181000000000000000000000000000000000000000000000000000010000000000002000000000000000800000000004000000000008004002000800) -ObservationTensor(2): binvec(578, 0x10012000200008000504501d8208000000000000000000000000000000000000000000000000000020000000000000008000000000040000000000010000000000008004002000800) -ObservationTensor(3): binvec(578, 0x1001200020000808083001201c52000000000000000000000000000000000000000000000000000000080000000000400000000000100000000000020000000000008004002000800) +CurrentPlayer() = 2 +ObservationString(0) = "S K82\nH K64\nD 952\nC AQT\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n\nTricks taken:\n\nNorth East South West\n0 0 1 0 \n" +ObservationString(1) = "S AT4\nH 2\nD AKQ74\nC 853\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n\nTricks taken:\n\nNorth East South West\n0 0 1 0 \n" +ObservationString(2) = "S QJ73\nH QJ53\nD none\nC K642\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n\nTricks taken:\n\nNorth East South West\n0 0 1 0 \n" +ObservationString(3) = "S 96\nH AT987\nD T3\nC J97\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n\nTricks taken:\n\nNorth East South West\n0 0 1 0 \n" +ObservationTensor(0): binvec(578, 0x12000002040100000ac880a05042000000000000000000000000000000000000000000000000000000001000000000000400000000000000000020000000200000008004001001000) +ObservationTensor(1): binvec(578, 0x120000020401000520121e000411000000000000000000000000000000000000000000000000000000004000000000000000000200000002000000000001000000008004001001000) +ObservationTensor(2): binvec(578, 0x120000020401000a81000141888c000000000000000000000000000000000000000000000000000000000000002000000020000000000010000000000004000000008004001001000) +ObservationTensor(3): binvec(578, 0x12000002040100005420401e2120000000000000000000000000000000000000000000000000000000000200000000000100000000000040000000000000000002008004001001000) Rewards() = [0, 0, 0, 0] Returns() = [0, 0, 0, 0] -LegalActions() = [0, 8, 14, 15, 27, 30] -StringLegalActions() = ["C2", "CT", "D3", "D4", "H3", "H6"] +LegalActions() = [0, 2, 4, 11, 27, 29, 35, 36] +StringLegalActions() = ["C2", "C4", "C6", "CK", "H3", "H5", "HJ", "HQ"] -# Apply action "D4" -action: 15 +# Apply action "HJ" +action: 35 # State 61 -# S Q9 -# H AT54 -# D 75 -# C Q983 -# S KT8432 S A76 -# H 63 H K2 -# D 3 D AKJ982 -# C T2 C 6 -# S J5 -# H QJ987 -# D QT6 -# C KJ +# S K82 +# H K64 +# D 952 +# C AQT +# S 96 S AT4 +# H AT987 H 2 +# D T3 D AKQ74 +# C J97 C 853 +# S QJ73 +# H Q53 +# D +# C K642 # # North East South West -# 11 Nil 2 6 +# 2 12 5 1 # # N E S W N E S -# C7 C5 C4 CA -# D4 +# D8 D6 S5 DJ +# HJ # # Tricks taken: # # North East South West -# 0 0 0 1 +# 0 0 1 0 IsTerminal() = False -History() = [29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54, 58, 5, 3, 2, 12, 15] -HistoryString() = "29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54, 58, 5, 3, 2, 12, 15" +History() = [19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57, 53, 19, 17, 42, 22, 35] +HistoryString() = "19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57, 53, 19, 17, 42, 22, 35" IsChanceNode() = False IsSimultaneousNode() = False -CurrentPlayer() = 0 -ObservationString(0) = "S Q9\nH AT54\nD 75\nC Q983\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 \n\nTricks taken:\n\nNorth East South West\n0 0 0 1 \n" -ObservationString(1) = "S A76\nH K2\nD AKJ982\nC 6\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 \n\nTricks taken:\n\nNorth East South West\n0 0 0 1 \n" -ObservationString(2) = "S J5\nH QJ987\nD QT6\nC KJ\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 \n\nTricks taken:\n\nNorth East South West\n0 0 0 1 \n" -ObservationString(3) = "S KT8432\nH 63\nD 3\nC T2\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 \n\nTricks taken:\n\nNorth East South West\n0 0 0 1 \n" -ObservationTensor(0): binvec(578, 0x1001200020000804320a00c22024000000000000000000000000000000000000000000100000000004000000000001000000000000200000000000000080000000008004002000800) -ObservationTensor(1): binvec(578, 0x10012000200008008041ae004181000000000000000000000000000001000000000000000000000010000000000002000000000000000800000000004000000000008004002000800) -ObservationTensor(2): binvec(578, 0x10012000200008000504501d8208000000000000000010000000000000000000000000000000000020000000000000008000000000040000000000010000000000008004002000800) -ObservationTensor(3): binvec(578, 0x1001200020000808082001201c52000100000000000000000000000000000000000000000000000000080000000000400000000000100000000000020000000000008004002000800) +CurrentPlayer() = 3 +ObservationString(0) = "S K82\nH K64\nD 952\nC AQT\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ \n\nTricks taken:\n\nNorth East South West\n0 0 1 0 \n" +ObservationString(1) = "S AT4\nH 2\nD AKQ74\nC 853\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ \n\nTricks taken:\n\nNorth East South West\n0 0 1 0 \n" +ObservationString(2) = "S QJ73\nH Q53\nD none\nC K642\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ \n\nTricks taken:\n\nNorth East South West\n0 0 1 0 \n" +ObservationString(3) = "S 96\nH AT987\nD T3\nC J97\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ \n\nTricks taken:\n\nNorth East South West\n0 0 1 0 \n" +ObservationTensor(0): binvec(578, 0x12000002040100000ac880a05042000000000000000000000000000000000010000000000000000000001000000000000400000000000000000020000000200000008004001001000) +ObservationTensor(1): binvec(578, 0x120000020401000520121e000411000000000000000000000100000000000000000000000000000000004000000000000000000200000002000000000001000000008004001001000) +ObservationTensor(2): binvec(578, 0x120000020401000a81000140888c000000001000000000000000000000000000000000000000000000000000002000000020000000000010000000000004000000008004001001000) +ObservationTensor(3): binvec(578, 0x12000002040100005420401e2120000000000000000000000000000000000000000000000001000000000200000000000100000000000040000000000000000002008004001001000) Rewards() = [0, 0, 0, 0] Returns() = [0, 0, 0, 0] -LegalActions() = [16, 18] -StringLegalActions() = ["D5", "D7"] +LegalActions() = [31, 32, 33, 34, 38] +StringLegalActions() = ["H7", "H8", "H9", "HT", "HA"] -# Apply action "D7" -action: 18 +# Apply action "H8" +action: 32 # State 62 -# S Q9 -# H AT54 -# D 5 -# C Q983 -# S KT8432 S A76 -# H 63 H K2 -# D 3 D AKJ982 -# C T2 C 6 -# S J5 -# H QJ987 -# D QT6 -# C KJ +# S K82 +# H K64 +# D 952 +# C AQT +# S 96 S AT4 +# H AT97 H 2 +# D T3 D AKQ74 +# C J97 C 853 +# S QJ73 +# H Q53 +# D +# C K642 # # North East South West -# 11 Nil 2 6 +# 2 12 5 1 # # N E S W N E S -# C7 C5 C4 CA -# D4 D7 +# D8 D6 S5 DJ +# HJ H8 # # Tricks taken: # # North East South West -# 0 0 0 1 +# 0 0 1 0 IsTerminal() = False -History() = [29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54, 58, 5, 3, 2, 12, 15, 18] -HistoryString() = "29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54, 58, 5, 3, 2, 12, 15, 18" +History() = [19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57, 53, 19, 17, 42, 22, 35, 32] +HistoryString() = "19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57, 53, 19, 17, 42, 22, 35, 32" IsChanceNode() = False IsSimultaneousNode() = False -CurrentPlayer() = 1 -ObservationString(0) = "S Q9\nH AT54\nD 5\nC Q983\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 \n\nTricks taken:\n\nNorth East South West\n0 0 0 1 \n" -ObservationString(1) = "S A76\nH K2\nD AKJ982\nC 6\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 \n\nTricks taken:\n\nNorth East South West\n0 0 0 1 \n" -ObservationString(2) = "S J5\nH QJ987\nD QT6\nC KJ\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 \n\nTricks taken:\n\nNorth East South West\n0 0 0 1 \n" -ObservationString(3) = "S KT8432\nH 63\nD 3\nC T2\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 \n\nTricks taken:\n\nNorth East South West\n0 0 0 1 \n" -ObservationTensor(0): binvec(578, 0x1001200020000804320800c22024000020000000000000000000000000000000000000100000000004000000000001000000000000200000000000000080000000008004002000800) -ObservationTensor(1): binvec(578, 0x10012000200008008041ae004181000000000000000000000000000001000000000000020000000010000000000002000000000000000800000000004000000000008004002000800) -ObservationTensor(2): binvec(578, 0x10012000200008000504501d8208000000000000000010000000000000200000000000000000000020000000000000008000000000040000000000010000000000008004002000800) -ObservationTensor(3): binvec(578, 0x1001200020000808082001201c52000100000000000002000000000000000000000000000000000000080000000000400000000000100000000000020000000000008004002000800) +CurrentPlayer() = 0 +ObservationString(0) = "S K82\nH K64\nD 952\nC AQT\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 \n\nTricks taken:\n\nNorth East South West\n0 0 1 0 \n" +ObservationString(1) = "S AT4\nH 2\nD AKQ74\nC 853\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 \n\nTricks taken:\n\nNorth East South West\n0 0 1 0 \n" +ObservationString(2) = "S QJ73\nH Q53\nD none\nC K642\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 \n\nTricks taken:\n\nNorth East South West\n0 0 1 0 \n" +ObservationString(3) = "S 96\nH AT97\nD T3\nC J97\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 \n\nTricks taken:\n\nNorth East South West\n0 0 1 0 \n" +ObservationTensor(0): binvec(578, 0x12000002040100000ac880a05042000000000000000000000000000000000010000000000008000000001000000000000400000000000000000020000000200000008004001001000) +ObservationTensor(1): binvec(578, 0x120000020401000520121e000411000000000000000000000100000000000080000000000000000000004000000000000000000200000002000000000001000000008004001001000) +ObservationTensor(2): binvec(578, 0x120000020401000a81000140888c000000001000000000000800000000000000000000000000000000000000002000000020000000000010000000000004000000008004001001000) +ObservationTensor(3): binvec(578, 0x1200000204010000542040162120000000008000000000000000000000000000000000000001000000000200000000000100000000000040000000000000000002008004001001000) Rewards() = [0, 0, 0, 0] Returns() = [0, 0, 0, 0] -LegalActions() = [13, 19, 20, 22, 24, 25] -StringLegalActions() = ["D2", "D8", "D9", "DJ", "DK", "DA"] +LegalActions() = [28, 30, 37] +StringLegalActions() = ["H4", "H6", "HK"] -# Apply action "D8" -action: 19 +# Apply action "HK" +action: 37 # State 63 -# S Q9 -# H AT54 -# D 5 -# C Q983 -# S KT8432 S A76 -# H 63 H K2 -# D 3 D AKJ92 -# C T2 C 6 -# S J5 -# H QJ987 -# D QT6 -# C KJ +# S K82 +# H 64 +# D 952 +# C AQT +# S 96 S AT4 +# H AT97 H 2 +# D T3 D AKQ74 +# C J97 C 853 +# S QJ73 +# H Q53 +# D +# C K642 # # North East South West -# 11 Nil 2 6 +# 2 12 5 1 # # N E S W N E S -# C7 C5 C4 CA -# D4 D7 D8 +# D8 D6 S5 DJ +# HJ H8 HK # # Tricks taken: # # North East South West -# 0 0 0 1 +# 0 0 1 0 IsTerminal() = False -History() = [29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54, 58, 5, 3, 2, 12, 15, 18, 19] -HistoryString() = "29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54, 58, 5, 3, 2, 12, 15, 18, 19" +History() = [19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57, 53, 19, 17, 42, 22, 35, 32, 37] +HistoryString() = "19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57, 53, 19, 17, 42, 22, 35, 32, 37" IsChanceNode() = False IsSimultaneousNode() = False -CurrentPlayer() = 2 -ObservationString(0) = "S Q9\nH AT54\nD 5\nC Q983\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 D8 \n\nTricks taken:\n\nNorth East South West\n0 0 0 1 \n" -ObservationString(1) = "S A76\nH K2\nD AKJ92\nC 6\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 D8 \n\nTricks taken:\n\nNorth East South West\n0 0 0 1 \n" -ObservationString(2) = "S J5\nH QJ987\nD QT6\nC KJ\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 D8 \n\nTricks taken:\n\nNorth East South West\n0 0 0 1 \n" -ObservationString(3) = "S KT8432\nH 63\nD 3\nC T2\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 D8 \n\nTricks taken:\n\nNorth East South West\n0 0 0 1 \n" -ObservationTensor(0): binvec(578, 0x1001200020000804320800c22024000020000000000001000000000000000000000000100000000004000000000001000000000000200000000000000080000000008004002000800) -ObservationTensor(1): binvec(578, 0x10012000200008008040ae004181000010000000000000000000000001000000000000020000000010000000000002000000000000000800000000004000000000008004002000800) -ObservationTensor(2): binvec(578, 0x10012000200008000504501d8208000000000000000010000000000000200000000000010000000020000000000000008000000000040000000000010000000000008004002000800) -ObservationTensor(3): binvec(578, 0x1001200020000808082001201c52000100000000000002000000000000100000000000000000000000080000000000400000000000100000000000020000000000008004002000800) +CurrentPlayer() = 1 +ObservationString(0) = "S K82\nH 64\nD 952\nC AQT\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 HK \n\nTricks taken:\n\nNorth East South West\n0 0 1 0 \n" +ObservationString(1) = "S AT4\nH 2\nD AKQ74\nC 853\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 HK \n\nTricks taken:\n\nNorth East South West\n0 0 1 0 \n" +ObservationString(2) = "S QJ73\nH Q53\nD none\nC K642\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 HK \n\nTricks taken:\n\nNorth East South West\n0 0 1 0 \n" +ObservationString(3) = "S 96\nH AT97\nD T3\nC J97\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 HK \n\nTricks taken:\n\nNorth East South West\n0 0 1 0 \n" +ObservationTensor(0): binvec(578, 0x12000002040100000ac880a01042000000000400000000000000000000000010000000000008000000001000000000000400000000000000000020000000200000008004001001000) +ObservationTensor(1): binvec(578, 0x120000020401000520121e000411000000000000000000000100000000000080000000000000400000004000000000000000000200000002000000000001000000008004001001000) +ObservationTensor(2): binvec(578, 0x120000020401000a81000140888c000000001000000000000800000000000004000000000000000000000000002000000020000000000010000000000004000000008004001001000) +ObservationTensor(3): binvec(578, 0x1200000204010000542040162120000000008000000000000040000000000000000000000001000000000200000000000100000000000040000000000000000002008004001001000) Rewards() = [0, 0, 0, 0] Returns() = [0, 0, 0, 0] -LegalActions() = [17, 21, 23] -StringLegalActions() = ["D6", "DT", "DQ"] +LegalActions() = [26] +StringLegalActions() = ["H2"] -# Apply action "DT" -action: 21 +# Apply action "H2" +action: 26 # State 64 -# Apply action "HQ" -action: 36 +# Apply action "D9" +action: 20 # State 65 -# Apply action "H6" -action: 30 +# Apply action "DK" +action: 24 # State 66 -# Apply action "H4" -action: 28 +# Apply action "HQ" +action: 36 # State 67 -# Apply action "H2" -action: 26 +# Apply action "DT" +action: 21 # State 68 -# Apply action "CK" -action: 11 +# Apply action "C8" +action: 6 # State 69 -# Apply action "CT" -action: 8 +# Apply action "C6" +action: 4 # State 70 -# Apply action "CQ" -action: 10 +# Apply action "CJ" +action: 9 # State 71 -# Apply action "C6" -action: 4 +# Apply action "CT" +action: 8 # State 72 -# Apply action "DQ" -action: 23 +# Apply action "H7" +action: 31 # State 73 -# Apply action "D3" -action: 14 +# Apply action "H6" +action: 30 # State 74 -# Apply action "D5" -action: 16 +# Apply action "ST" +action: 47 # State 75 -# Apply action "D9" -action: 20 +# Apply action "H3" +action: 27 # State 76 -# Apply action "H7" -action: 31 +# Apply action "C3" +action: 1 # State 77 -# Apply action "H3" -action: 27 +# Apply action "CK" +action: 11 # State 78 -# Apply action "HT" -action: 34 +# Apply action "C7" +action: 5 # State 79 -# Apply action "HK" -action: 37 +# Apply action "CA" +action: 12 # State 80 -# Apply action "DK" -action: 24 +# Apply action "CQ" +action: 10 # State 81 -# Apply action "D6" -action: 17 +# Apply action "C5" +action: 3 # State 82 # Apply action "C2" action: 0 # State 83 -# Apply action "H5" -action: 29 +# Apply action "C9" +action: 7 # State 84 -# Apply action "D2" -action: 13 +# Apply action "H4" +action: 28 # State 85 -# Apply action "SJ" -action: 48 +# Apply action "S4" +action: 41 # State 86 -# Apply action "S2" -action: 39 +# Apply action "H5" +action: 29 # State 87 -# Apply action "S9" -action: 46 +# Apply action "H9" +action: 33 # State 88 -# Apply action "HJ" -action: 35 +# Apply action "D4" +action: 15 # State 89 -# Apply action "S8" -action: 45 +# Apply action "SJ" +action: 48 # State 90 -# Apply action "HA" -action: 38 +# Apply action "D3" +action: 14 # State 91 -# Apply action "DA" -action: 25 +# Apply action "D2" +action: 13 # State 92 -# S Q +# S K82 # H -# D -# C 983 -# S KT43 S A76 -# H H -# D D J +# D 5 +# C +# S 96 S A +# H AT H +# D D AQ7 # C C -# S 5 -# H 98 +# S Q73 +# H # D -# C J +# C 4 # # North East South West -# 11 Nil 2 6 +# 2 12 5 1 # # N E S W N E S -# C7 C5 C4 CA -# D4 D7 D8 DT -# HQ H6 H4 H2 -# CK CT CQ C6 -# DQ D3 D5 D9 -# H7 H3 HT HK -# DK D6 C2 H5 -# D2 SJ S2 S9 -# HJ S8 HA DA +# D8 D6 S5 DJ +# HJ H8 HK H2 +# D9 DK HQ DT +# C8 C6 CJ CT +# H7 H6 ST H3 +# C3 CK C7 CA +# CQ C5 C2 C9 +# H4 S4 H5 H9 +# D4 SJ D3 D2 # # Tricks taken: # # North East South West -# 0 2 5 2 +# 3 3 2 1 IsTerminal() = False -History() = [29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54, 58, 5, 3, 2, 12, 15, 18, 19, 21, 36, 30, 28, 26, 11, 8, 10, 4, 23, 14, 16, 20, 31, 27, 34, 37, 24, 17, 0, 29, 13, 48, 39, 46, 35, 45, 38, 25] -HistoryString() = "29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54, 58, 5, 3, 2, 12, 15, 18, 19, 21, 36, 30, 28, 26, 11, 8, 10, 4, 23, 14, 16, 20, 31, 27, 34, 37, 24, 17, 0, 29, 13, 48, 39, 46, 35, 45, 38, 25" +History() = [19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57, 53, 19, 17, 42, 22, 35, 32, 37, 26, 20, 24, 36, 21, 6, 4, 9, 8, 31, 30, 47, 27, 1, 11, 5, 12, 10, 3, 0, 7, 28, 41, 29, 33, 15, 48, 14, 13] +HistoryString() = "19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57, 53, 19, 17, 42, 22, 35, 32, 37, 26, 20, 24, 36, 21, 6, 4, 9, 8, 31, 30, 47, 27, 1, 11, 5, 12, 10, 3, 0, 7, 28, 41, 29, 33, 15, 48, 14, 13" IsChanceNode() = False IsSimultaneousNode() = False -CurrentPlayer() = 3 -ObservationString(0) = "S Q\nH none\nD none\nC 983\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 D8 DT \n HQ H6 H4 H2 \n CK CT CQ C6 \n DQ D3 D5 D9 \n H7 H3 HT HK \n DK D6 C2 H5 \n D2 SJ S2 S9 \n HJ S8 HA DA \n\nTricks taken:\n\nNorth East South West\n0 2 5 2 \n" -ObservationString(1) = "S A76\nH none\nD J\nC none\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 D8 DT \n HQ H6 H4 H2 \n CK CT CQ C6 \n DQ D3 D5 D9 \n H7 H3 HT HK \n DK D6 C2 H5 \n D2 SJ S2 S9 \n HJ S8 HA DA \n\nTricks taken:\n\nNorth East South West\n0 2 5 2 \n" -ObservationString(2) = "S 5\nH 98\nD none\nC J\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 D8 DT \n HQ H6 H4 H2 \n CK CT CQ C6 \n DQ D3 D5 D9 \n H7 H3 HT HK \n DK D6 C2 H5 \n D2 SJ S2 S9 \n HJ S8 HA DA \n\nTricks taken:\n\nNorth East South West\n0 2 5 2 \n" -ObservationString(3) = "S KT43\nH none\nD none\nC none\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 D8 DT \n HQ H6 H4 H2 \n CK CT CQ C6 \n DQ D3 D5 D9 \n H7 H3 HT HK \n DK D6 C2 H5 \n D2 SJ S2 S9 \n HJ S8 HA DA \n\nTricks taken:\n\nNorth East South West\n0 2 5 2 \n" -ObservationTensor(0): binvec(578, 0x1001200020000804300000000004000000000000000000000000000000000000000000000000000000000000020000000004000000000000001000000000000000408001000100400) -ObservationTensor(1): binvec(578, 0x1001200020000800000020000181000000000000000000000000000000000000000000000000000000000040000000000000010000000000000004000000000020008001000100400) -ObservationTensor(2): binvec(578, 0x10012000200008000400000c0200000000000000000000000000000000000000000000000000000000000000100000000000000040000000000200000000040000008001000100400) -ObservationTensor(3): binvec(578, 0x1001200020000800000000000c12000000000000000000000000000000000000000000000000000000000000000400000000002000000000400000000000000100008001000100400) +CurrentPlayer() = 2 +ObservationString(0) = "S K82\nH none\nD 5\nC none\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 HK H2 \nD9 DK HQ DT \n C8 C6 CJ CT \n H7 H6 ST H3 \n C3 CK C7 CA \nCQ C5 C2 C9 \nH4 S4 H5 H9 \n D4 SJ D3 D2 \n\nTricks taken:\n\nNorth East South West\n3 3 2 1 \n" +ObservationString(1) = "S A\nH none\nD AQ7\nC none\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 HK H2 \nD9 DK HQ DT \n C8 C6 CJ CT \n H7 H6 ST H3 \n C3 CK C7 CA \nCQ C5 C2 C9 \nH4 S4 H5 H9 \n D4 SJ D3 D2 \n\nTricks taken:\n\nNorth East South West\n3 3 2 1 \n" +ObservationString(2) = "S Q73\nH none\nD none\nC 4\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 HK H2 \nD9 DK HQ DT \n C8 C6 CJ CT \n H7 H6 ST H3 \n C3 CK C7 CA \nCQ C5 C2 C9 \nH4 S4 H5 H9 \n D4 SJ D3 D2 \n\nTricks taken:\n\nNorth East South West\n3 3 2 1 \n" +ObservationString(3) = "S 96\nH AT\nD none\nC none\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 HK H2 \nD9 DK HQ DT \n C8 C6 CJ CT \n H7 H6 ST H3 \n C3 CK C7 CA \nCQ C5 C2 C9 \nH4 S4 H5 H9 \n D4 SJ D3 D2 \n\nTricks taken:\n\nNorth East South West\n3 3 2 1 \n" +ObservationTensor(0): binvec(578, 0x1200000204010000000800001042000000000000000000000000000000000000000000000000000000040000000000001000000000000000000000800020000000001000800800800) +ObservationTensor(1): binvec(578, 0x1200000204010000000214000001000000000000000000000000000000000000000000000000000000010000000000000000000008000200000000000040000000001000800800800) +ObservationTensor(2): binvec(578, 0x1200000204010002000000000884000000000000000000000000000000000000000000000000000000000000000080002000000000000400000000000010000000001000800800800) +ObservationTensor(3): binvec(578, 0x1200000204010000000000022120000000000000000000000000000000000000000000000000000000020000000000004000000000000100000000000000000000081000800800800) Rewards() = [0, 0, 0, 0] Returns() = [0, 0, 0, 0] -LegalActions() = [40, 41, 47, 50] -StringLegalActions() = ["S3", "S4", "ST", "SK"] +LegalActions() = [2] +StringLegalActions() = ["C4"] -# Apply action "ST" -action: 47 +# Apply action "C4" +action: 2 # State 93 -# S Q +# S K82 # H -# D -# C 983 -# S K43 S A76 -# H H -# D D J +# D 5 +# C +# S 96 S A +# H AT H +# D D AQ7 # C C -# S 5 -# H 98 +# S Q73 +# H # D -# C J +# C # # North East South West -# 11 Nil 2 6 +# 2 12 5 1 # # N E S W N E S -# C7 C5 C4 CA -# D4 D7 D8 DT -# HQ H6 H4 H2 -# CK CT CQ C6 -# DQ D3 D5 D9 -# H7 H3 HT HK -# DK D6 C2 H5 -# D2 SJ S2 S9 -# HJ S8 HA DA -# ST +# D8 D6 S5 DJ +# HJ H8 HK H2 +# D9 DK HQ DT +# C8 C6 CJ CT +# H7 H6 ST H3 +# C3 CK C7 CA +# CQ C5 C2 C9 +# H4 S4 H5 H9 +# D4 SJ D3 D2 +# C4 # # Tricks taken: # # North East South West -# 0 2 5 2 +# 3 3 2 1 IsTerminal() = False -History() = [29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54, 58, 5, 3, 2, 12, 15, 18, 19, 21, 36, 30, 28, 26, 11, 8, 10, 4, 23, 14, 16, 20, 31, 27, 34, 37, 24, 17, 0, 29, 13, 48, 39, 46, 35, 45, 38, 25, 47] -HistoryString() = "29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54, 58, 5, 3, 2, 12, 15, 18, 19, 21, 36, 30, 28, 26, 11, 8, 10, 4, 23, 14, 16, 20, 31, 27, 34, 37, 24, 17, 0, 29, 13, 48, 39, 46, 35, 45, 38, 25, 47" +History() = [19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57, 53, 19, 17, 42, 22, 35, 32, 37, 26, 20, 24, 36, 21, 6, 4, 9, 8, 31, 30, 47, 27, 1, 11, 5, 12, 10, 3, 0, 7, 28, 41, 29, 33, 15, 48, 14, 13, 2] +HistoryString() = "19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57, 53, 19, 17, 42, 22, 35, 32, 37, 26, 20, 24, 36, 21, 6, 4, 9, 8, 31, 30, 47, 27, 1, 11, 5, 12, 10, 3, 0, 7, 28, 41, 29, 33, 15, 48, 14, 13, 2" IsChanceNode() = False IsSimultaneousNode() = False -CurrentPlayer() = 0 -ObservationString(0) = "S Q\nH none\nD none\nC 983\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 D8 DT \n HQ H6 H4 H2 \n CK CT CQ C6 \n DQ D3 D5 D9 \n H7 H3 HT HK \n DK D6 C2 H5 \n D2 SJ S2 S9 \n HJ S8 HA DA \n ST \n\nTricks taken:\n\nNorth East South West\n0 2 5 2 \n" -ObservationString(1) = "S A76\nH none\nD J\nC none\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 D8 DT \n HQ H6 H4 H2 \n CK CT CQ C6 \n DQ D3 D5 D9 \n H7 H3 HT HK \n DK D6 C2 H5 \n D2 SJ S2 S9 \n HJ S8 HA DA \n ST \n\nTricks taken:\n\nNorth East South West\n0 2 5 2 \n" -ObservationString(2) = "S 5\nH 98\nD none\nC J\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 D8 DT \n HQ H6 H4 H2 \n CK CT CQ C6 \n DQ D3 D5 D9 \n H7 H3 HT HK \n DK D6 C2 H5 \n D2 SJ S2 S9 \n HJ S8 HA DA \n ST \n\nTricks taken:\n\nNorth East South West\n0 2 5 2 \n" -ObservationString(3) = "S K43\nH none\nD none\nC none\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 D8 DT \n HQ H6 H4 H2 \n CK CT CQ C6 \n DQ D3 D5 D9 \n H7 H3 HT HK \n DK D6 C2 H5 \n D2 SJ S2 S9 \n HJ S8 HA DA \n ST \n\nTricks taken:\n\nNorth East South West\n0 2 5 2 \n" -ObservationTensor(0): binvec(578, 0x1001200020000804300000000004000000000000000000000000000000000000000000000000001000000000020000000004000000000000001000000000000000408001000100400) -ObservationTensor(1): binvec(578, 0x1001200020000800000020000181000000000000000000000000000000000000010000000000000000000040000000000000010000000000000004000000000020008001000100400) -ObservationTensor(2): binvec(578, 0x10012000200008000400000c0200000000000000000000000000100000000000000000000000000000000000100000000000000040000000000200000000040000008001000100400) -ObservationTensor(3): binvec(578, 0x1001200020000800000000000c02000000000001000000000000000000000000000000000000000000000000000400000000002000000000400000000000000100008001000100400) +CurrentPlayer() = 3 +ObservationString(0) = "S K82\nH none\nD 5\nC none\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 HK H2 \nD9 DK HQ DT \n C8 C6 CJ CT \n H7 H6 ST H3 \n C3 CK C7 CA \nCQ C5 C2 C9 \nH4 S4 H5 H9 \n D4 SJ D3 D2 \n C4 \n\nTricks taken:\n\nNorth East South West\n3 3 2 1 \n" +ObservationString(1) = "S A\nH none\nD AQ7\nC none\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 HK H2 \nD9 DK HQ DT \n C8 C6 CJ CT \n H7 H6 ST H3 \n C3 CK C7 CA \nCQ C5 C2 C9 \nH4 S4 H5 H9 \n D4 SJ D3 D2 \n C4 \n\nTricks taken:\n\nNorth East South West\n3 3 2 1 \n" +ObservationString(2) = "S Q73\nH none\nD none\nC none\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 HK H2 \nD9 DK HQ DT \n C8 C6 CJ CT \n H7 H6 ST H3 \n C3 CK C7 CA \nCQ C5 C2 C9 \nH4 S4 H5 H9 \n D4 SJ D3 D2 \n C4 \n\nTricks taken:\n\nNorth East South West\n3 3 2 1 \n" +ObservationString(3) = "S 96\nH AT\nD none\nC none\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 HK H2 \nD9 DK HQ DT \n C8 C6 CJ CT \n H7 H6 ST H3 \n C3 CK C7 CA \nCQ C5 C2 C9 \nH4 S4 H5 H9 \n D4 SJ D3 D2 \n C4 \n\nTricks taken:\n\nNorth East South West\n3 3 2 1 \n" +ObservationTensor(0): binvec(578, 0x1200000204010000000800001042000000000000000000000000002000000000000000000000000000040000000000001000000000000000000000800020000000001000800800800) +ObservationTensor(1): binvec(578, 0x1200000204010000000214000001000000000000020000000000000000000000000000000000000000010000000000000000000008000200000000000040000000001000800800800) +ObservationTensor(2): binvec(578, 0x1200000204010000000000000884200000000000000000000000000000000000000000000000000000000000000080002000000000000400000000000010000000001000800800800) +ObservationTensor(3): binvec(578, 0x1200000204010000000000022120000000000000000000000000000000000000000200000000000000020000000000004000000000000100000000000000000000081000800800800) Rewards() = [0, 0, 0, 0] Returns() = [0, 0, 0, 0] -LegalActions() = [49] -StringLegalActions() = ["SQ"] +LegalActions() = [34, 38, 43, 46] +StringLegalActions() = ["HT", "HA", "S6", "S9"] -# Apply action "SQ" -action: 49 +# Apply action "HA" +action: 38 # State 94 -# S +# S K82 # H -# D -# C 983 -# S K43 S A76 -# H H -# D D J +# D 5 +# C +# S 96 S A +# H T H +# D D AQ7 # C C -# S 5 -# H 98 +# S Q73 +# H # D -# C J +# C # # North East South West -# 11 Nil 2 6 +# 2 12 5 1 # # N E S W N E S -# C7 C5 C4 CA -# D4 D7 D8 DT -# HQ H6 H4 H2 -# CK CT CQ C6 -# DQ D3 D5 D9 -# H7 H3 HT HK -# DK D6 C2 H5 -# D2 SJ S2 S9 -# HJ S8 HA DA -# ST SQ +# D8 D6 S5 DJ +# HJ H8 HK H2 +# D9 DK HQ DT +# C8 C6 CJ CT +# H7 H6 ST H3 +# C3 CK C7 CA +# CQ C5 C2 C9 +# H4 S4 H5 H9 +# D4 SJ D3 D2 +# C4 HA # # Tricks taken: # # North East South West -# 0 2 5 2 +# 3 3 2 1 IsTerminal() = False -History() = [29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54, 58, 5, 3, 2, 12, 15, 18, 19, 21, 36, 30, 28, 26, 11, 8, 10, 4, 23, 14, 16, 20, 31, 27, 34, 37, 24, 17, 0, 29, 13, 48, 39, 46, 35, 45, 38, 25, 47, 49] -HistoryString() = "29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54, 58, 5, 3, 2, 12, 15, 18, 19, 21, 36, 30, 28, 26, 11, 8, 10, 4, 23, 14, 16, 20, 31, 27, 34, 37, 24, 17, 0, 29, 13, 48, 39, 46, 35, 45, 38, 25, 47, 49" +History() = [19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57, 53, 19, 17, 42, 22, 35, 32, 37, 26, 20, 24, 36, 21, 6, 4, 9, 8, 31, 30, 47, 27, 1, 11, 5, 12, 10, 3, 0, 7, 28, 41, 29, 33, 15, 48, 14, 13, 2, 38] +HistoryString() = "19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57, 53, 19, 17, 42, 22, 35, 32, 37, 26, 20, 24, 36, 21, 6, 4, 9, 8, 31, 30, 47, 27, 1, 11, 5, 12, 10, 3, 0, 7, 28, 41, 29, 33, 15, 48, 14, 13, 2, 38" IsChanceNode() = False IsSimultaneousNode() = False -CurrentPlayer() = 1 -ObservationString(0) = "S none\nH none\nD none\nC 983\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 D8 DT \n HQ H6 H4 H2 \n CK CT CQ C6 \n DQ D3 D5 D9 \n H7 H3 HT HK \n DK D6 C2 H5 \n D2 SJ S2 S9 \n HJ S8 HA DA \n ST SQ \n\nTricks taken:\n\nNorth East South West\n0 2 5 2 \n" -ObservationString(1) = "S A76\nH none\nD J\nC none\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 D8 DT \n HQ H6 H4 H2 \n CK CT CQ C6 \n DQ D3 D5 D9 \n H7 H3 HT HK \n DK D6 C2 H5 \n D2 SJ S2 S9 \n HJ S8 HA DA \n ST SQ \n\nTricks taken:\n\nNorth East South West\n0 2 5 2 \n" -ObservationString(2) = "S 5\nH 98\nD none\nC J\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 D8 DT \n HQ H6 H4 H2 \n CK CT CQ C6 \n DQ D3 D5 D9 \n H7 H3 HT HK \n DK D6 C2 H5 \n D2 SJ S2 S9 \n HJ S8 HA DA \n ST SQ \n\nTricks taken:\n\nNorth East South West\n0 2 5 2 \n" -ObservationString(3) = "S K43\nH none\nD none\nC none\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 D8 DT \n HQ H6 H4 H2 \n CK CT CQ C6 \n DQ D3 D5 D9 \n H7 H3 HT HK \n DK D6 C2 H5 \n D2 SJ S2 S9 \n HJ S8 HA DA \n ST SQ \n\nTricks taken:\n\nNorth East South West\n0 2 5 2 \n" -ObservationTensor(0): binvec(578, 0x1001200020000804300000000000000000000000400000000000000000000000000000000000001000000000020000000004000000000000001000000000000000408001000100400) -ObservationTensor(1): binvec(578, 0x1001200020000800000020000181000000000000000000000000000000000000010000000000000400000040000000000000010000000000000004000000000020008001000100400) -ObservationTensor(2): binvec(578, 0x10012000200008000400000c0200000000000000000000000000100000000000004000000000000000000000100000000000000040000000000200000000040000008001000100400) -ObservationTensor(3): binvec(578, 0x1001200020000800000000000c02000000000001000000000000040000000000000000000000000000000000000400000000002000000000400000000000000100008001000100400) +CurrentPlayer() = 0 +ObservationString(0) = "S K82\nH none\nD 5\nC none\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 HK H2 \nD9 DK HQ DT \n C8 C6 CJ CT \n H7 H6 ST H3 \n C3 CK C7 CA \nCQ C5 C2 C9 \nH4 S4 H5 H9 \n D4 SJ D3 D2 \n C4 HA \n\nTricks taken:\n\nNorth East South West\n3 3 2 1 \n" +ObservationString(1) = "S A\nH none\nD AQ7\nC none\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 HK H2 \nD9 DK HQ DT \n C8 C6 CJ CT \n H7 H6 ST H3 \n C3 CK C7 CA \nCQ C5 C2 C9 \nH4 S4 H5 H9 \n D4 SJ D3 D2 \n C4 HA \n\nTricks taken:\n\nNorth East South West\n3 3 2 1 \n" +ObservationString(2) = "S Q73\nH none\nD none\nC none\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 HK H2 \nD9 DK HQ DT \n C8 C6 CJ CT \n H7 H6 ST H3 \n C3 CK C7 CA \nCQ C5 C2 C9 \nH4 S4 H5 H9 \n D4 SJ D3 D2 \n C4 HA \n\nTricks taken:\n\nNorth East South West\n3 3 2 1 \n" +ObservationString(3) = "S 96\nH T\nD none\nC none\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 HK H2 \nD9 DK HQ DT \n C8 C6 CJ CT \n H7 H6 ST H3 \n C3 CK C7 CA \nCQ C5 C2 C9 \nH4 S4 H5 H9 \n D4 SJ D3 D2 \n C4 HA \n\nTricks taken:\n\nNorth East South West\n3 3 2 1 \n" +ObservationTensor(0): binvec(578, 0x1200000204010000000800001042000000000000000000000000002000000000000000000000200000040000000000001000000000000000000000800020000000001000800800800) +ObservationTensor(1): binvec(578, 0x1200000204010000000214000001000000000000020000000000000000000002000000000000000000010000000000000000000008000200000000000040000000001000800800800) +ObservationTensor(2): binvec(578, 0x1200000204010000000000000884200000000000000000000020000000000000000000000000000000000000000080002000000000000400000000000010000000001000800800800) +ObservationTensor(3): binvec(578, 0x1200000204010000000000020120000000000200000000000000000000000000000200000000000000020000000000004000000000000100000000000000000000081000800800800) Rewards() = [0, 0, 0, 0] Returns() = [0, 0, 0, 0] -LegalActions() = [43, 44, 51] -StringLegalActions() = ["S6", "S7", "SA"] +LegalActions() = [16, 39, 45, 50] +StringLegalActions() = ["D5", "S2", "S8", "SK"] -# Apply action "S6" -action: 43 +# Apply action "S8" +action: 45 # State 95 -# S +# S K2 # H -# D -# C 983 -# S K43 S A7 -# H H -# D D J +# D 5 +# C +# S 96 S A +# H T H +# D D AQ7 # C C -# S 5 -# H 98 +# S Q73 +# H # D -# C J +# C # # North East South West -# 11 Nil 2 6 +# 2 12 5 1 # # N E S W N E S -# C7 C5 C4 CA -# D4 D7 D8 DT -# HQ H6 H4 H2 -# CK CT CQ C6 -# DQ D3 D5 D9 -# H7 H3 HT HK -# DK D6 C2 H5 -# D2 SJ S2 S9 -# HJ S8 HA DA -# ST SQ S6 +# D8 D6 S5 DJ +# HJ H8 HK H2 +# D9 DK HQ DT +# C8 C6 CJ CT +# H7 H6 ST H3 +# C3 CK C7 CA +# CQ C5 C2 C9 +# H4 S4 H5 H9 +# D4 SJ D3 D2 +# C4 HA S8 # # Tricks taken: # # North East South West -# 0 2 5 2 +# 3 3 2 1 IsTerminal() = False -History() = [29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54, 58, 5, 3, 2, 12, 15, 18, 19, 21, 36, 30, 28, 26, 11, 8, 10, 4, 23, 14, 16, 20, 31, 27, 34, 37, 24, 17, 0, 29, 13, 48, 39, 46, 35, 45, 38, 25, 47, 49, 43] -HistoryString() = "29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54, 58, 5, 3, 2, 12, 15, 18, 19, 21, 36, 30, 28, 26, 11, 8, 10, 4, 23, 14, 16, 20, 31, 27, 34, 37, 24, 17, 0, 29, 13, 48, 39, 46, 35, 45, 38, 25, 47, 49, 43" +History() = [19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57, 53, 19, 17, 42, 22, 35, 32, 37, 26, 20, 24, 36, 21, 6, 4, 9, 8, 31, 30, 47, 27, 1, 11, 5, 12, 10, 3, 0, 7, 28, 41, 29, 33, 15, 48, 14, 13, 2, 38, 45] +HistoryString() = "19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57, 53, 19, 17, 42, 22, 35, 32, 37, 26, 20, 24, 36, 21, 6, 4, 9, 8, 31, 30, 47, 27, 1, 11, 5, 12, 10, 3, 0, 7, 28, 41, 29, 33, 15, 48, 14, 13, 2, 38, 45" IsChanceNode() = False IsSimultaneousNode() = False -CurrentPlayer() = 2 -ObservationString(0) = "S none\nH none\nD none\nC 983\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 D8 DT \n HQ H6 H4 H2 \n CK CT CQ C6 \n DQ D3 D5 D9 \n H7 H3 HT HK \n DK D6 C2 H5 \n D2 SJ S2 S9 \n HJ S8 HA DA \n ST SQ S6 \n\nTricks taken:\n\nNorth East South West\n0 2 5 2 \n" -ObservationString(1) = "S A7\nH none\nD J\nC none\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 D8 DT \n HQ H6 H4 H2 \n CK CT CQ C6 \n DQ D3 D5 D9 \n H7 H3 HT HK \n DK D6 C2 H5 \n D2 SJ S2 S9 \n HJ S8 HA DA \n ST SQ S6 \n\nTricks taken:\n\nNorth East South West\n0 2 5 2 \n" -ObservationString(2) = "S 5\nH 98\nD none\nC J\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 D8 DT \n HQ H6 H4 H2 \n CK CT CQ C6 \n DQ D3 D5 D9 \n H7 H3 HT HK \n DK D6 C2 H5 \n D2 SJ S2 S9 \n HJ S8 HA DA \n ST SQ S6 \n\nTricks taken:\n\nNorth East South West\n0 2 5 2 \n" -ObservationString(3) = "S K43\nH none\nD none\nC none\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 D8 DT \n HQ H6 H4 H2 \n CK CT CQ C6 \n DQ D3 D5 D9 \n H7 H3 HT HK \n DK D6 C2 H5 \n D2 SJ S2 S9 \n HJ S8 HA DA \n ST SQ S6 \n\nTricks taken:\n\nNorth East South West\n0 2 5 2 \n" -ObservationTensor(0): binvec(578, 0x1001200020000804300000000000000000000000400000000001000000000000000000000000001000000000020000000004000000000000001000000000000000408001000100400) -ObservationTensor(1): binvec(578, 0x1001200020000800000020000081000000000010000000000000000000000000010000000000000400000040000000000000010000000000000004000000000020008001000100400) -ObservationTensor(2): binvec(578, 0x10012000200008000400000c0200000000000000000000000000100000000000004000000000010000000000100000000000000040000000000200000000040000008001000100400) -ObservationTensor(3): binvec(578, 0x1001200020000800000000000c02000000000001000000000000040000000000100000000000000000000000000400000000002000000000400000000000000100008001000100400) +CurrentPlayer() = 1 +ObservationString(0) = "S K2\nH none\nD 5\nC none\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 HK H2 \nD9 DK HQ DT \n C8 C6 CJ CT \n H7 H6 ST H3 \n C3 CK C7 CA \nCQ C5 C2 C9 \nH4 S4 H5 H9 \n D4 SJ D3 D2 \n C4 HA S8 \n\nTricks taken:\n\nNorth East South West\n3 3 2 1 \n" +ObservationString(1) = "S A\nH none\nD AQ7\nC none\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 HK H2 \nD9 DK HQ DT \n C8 C6 CJ CT \n H7 H6 ST H3 \n C3 CK C7 CA \nCQ C5 C2 C9 \nH4 S4 H5 H9 \n D4 SJ D3 D2 \n C4 HA S8 \n\nTricks taken:\n\nNorth East South West\n3 3 2 1 \n" +ObservationString(2) = "S Q73\nH none\nD none\nC none\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 HK H2 \nD9 DK HQ DT \n C8 C6 CJ CT \n H7 H6 ST H3 \n C3 CK C7 CA \nCQ C5 C2 C9 \nH4 S4 H5 H9 \n D4 SJ D3 D2 \n C4 HA S8 \n\nTricks taken:\n\nNorth East South West\n3 3 2 1 \n" +ObservationString(3) = "S 96\nH T\nD none\nC none\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 HK H2 \nD9 DK HQ DT \n C8 C6 CJ CT \n H7 H6 ST H3 \n C3 CK C7 CA \nCQ C5 C2 C9 \nH4 S4 H5 H9 \n D4 SJ D3 D2 \n C4 HA S8 \n\nTricks taken:\n\nNorth East South West\n3 3 2 1 \n" +ObservationTensor(0): binvec(578, 0x1200000204010000000800001002000000000004000000000000002000000000000000000000200000040000000000001000000000000000000000800020000000001000800800800) +ObservationTensor(1): binvec(578, 0x1200000204010000000214000001000000000000020000000000000000000002000000000000004000010000000000000000000008000200000000000040000000001000800800800) +ObservationTensor(2): binvec(578, 0x1200000204010000000000000884200000000000000000000020000000000000040000000000000000000000000080002000000000000400000000000010000000001000800800800) +ObservationTensor(3): binvec(578, 0x1200000204010000000000020120000000000200000000000000400000000000000200000000000000020000000000004000000000000100000000000000000000081000800800800) Rewards() = [0, 0, 0, 0] Returns() = [0, 0, 0, 0] -LegalActions() = [42] -StringLegalActions() = ["S5"] +LegalActions() = [18, 23, 25, 51] +StringLegalActions() = ["D7", "DQ", "DA", "SA"] -# Apply action "S5" -action: 42 +# Apply action "DQ" +action: 23 # State 96 -# Apply action "C8" -action: 6 +# Apply action "D5" +action: 16 # State 97 -# Apply action "S7" -action: 44 +# Apply action "D7" +action: 18 # State 98 -# Apply action "CJ" -action: 9 +# Apply action "SQ" +action: 49 # State 99 -# Apply action "SK" -action: 50 +# Apply action "HT" +action: 34 # State 100 -# Apply action "S4" -action: 41 +# Apply action "S3" +action: 40 # State 101 -# Apply action "C3" -action: 1 +# Apply action "S6" +action: 43 # State 102 -# Apply action "SA" -action: 51 +# Apply action "S2" +action: 39 # State 103 -# Apply action "H8" -action: 32 +# Apply action "SA" +action: 51 # State 104 -# Apply action "DJ" -action: 22 +# Apply action "DA" +action: 25 # State 105 -# Apply action "H9" -action: 33 +# Apply action "S7" +action: 44 # State 106 -# Apply action "S3" -action: 40 +# Apply action "S9" +action: 46 # State 107 -# Apply action "C9" -action: 7 +# Apply action "SK" +action: 50 # State 108 -# S Q9 -# H AT54 -# D 75 -# C Q9873 -# S KT8432 S A76 -# H 63 H K2 -# D 43 D AKJ982 -# C AT2 C 65 -# S J5 -# H QJ987 -# D QT6 -# C KJ4 +# S K82 +# H K64 +# D 9852 +# C AQT +# S 96 S AT4 +# H AT987 H 2 +# D JT3 D AKQ764 +# C J97 C 853 +# S QJ753 +# H QJ53 +# D +# C K642 # # North East South West -# 11 Nil 2 6 +# 2 12 5 1 # # N E S W N E S -# C7 C5 C4 CA -# D4 D7 D8 DT -# HQ H6 H4 H2 -# CK CT CQ C6 -# DQ D3 D5 D9 -# H7 H3 HT HK -# DK D6 C2 H5 -# D2 SJ S2 S9 -# HJ S8 HA DA -# ST SQ S6 S5 -# C8 S7 CJ SK -# S4 C3 SA H8 -# DJ H9 S3 C9 +# D8 D6 S5 DJ +# HJ H8 HK H2 +# D9 DK HQ DT +# C8 C6 CJ CT +# H7 H6 ST H3 +# C3 CK C7 CA +# CQ C5 C2 C9 +# H4 S4 H5 H9 +# D4 SJ D3 D2 +# C4 HA S8 DQ +# D5 D7 SQ HT +# S3 S6 S2 SA +# DA S7 S9 SK # # Tricks taken: # # North East South West -# 1 3 5 4 +# 5 4 3 1 # -# Score: N/S -130 E/W -39 +# Score: N/S 71 E/W -130 IsTerminal() = True -History() = [29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54, 58, 5, 3, 2, 12, 15, 18, 19, 21, 36, 30, 28, 26, 11, 8, 10, 4, 23, 14, 16, 20, 31, 27, 34, 37, 24, 17, 0, 29, 13, 48, 39, 46, 35, 45, 38, 25, 47, 49, 43, 42, 6, 44, 9, 50, 41, 1, 51, 32, 22, 33, 40, 7] -HistoryString() = "29, 26, 33, 41, 5, 13, 48, 39, 28, 24, 31, 14, 10, 44, 23, 30, 49, 37, 2, 45, 6, 19, 35, 50, 7, 4, 42, 8, 1, 3, 32, 27, 34, 51, 11, 0, 18, 20, 36, 47, 38, 25, 17, 12, 46, 43, 9, 15, 16, 22, 21, 40, 63, 52, 54, 58, 5, 3, 2, 12, 15, 18, 19, 21, 36, 30, 28, 26, 11, 8, 10, 4, 23, 14, 16, 20, 31, 27, 34, 37, 24, 17, 0, 29, 13, 48, 39, 46, 35, 45, 38, 25, 47, 49, 43, 42, 6, 44, 9, 50, 41, 1, 51, 32, 22, 33, 40, 7" +History() = [19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57, 53, 19, 17, 42, 22, 35, 32, 37, 26, 20, 24, 36, 21, 6, 4, 9, 8, 31, 30, 47, 27, 1, 11, 5, 12, 10, 3, 0, 7, 28, 41, 29, 33, 15, 48, 14, 13, 2, 38, 45, 23, 16, 18, 49, 34, 40, 43, 39, 51, 25, 44, 46, 50] +HistoryString() = "19, 18, 48, 43, 12, 26, 0, 7, 28, 1, 40, 21, 16, 47, 29, 34, 20, 51, 36, 14, 50, 25, 4, 5, 45, 15, 35, 46, 39, 41, 2, 9, 13, 17, 42, 38, 37, 24, 44, 31, 10, 23, 49, 32, 8, 3, 27, 22, 30, 6, 11, 33, 54, 64, 57, 53, 19, 17, 42, 22, 35, 32, 37, 26, 20, 24, 36, 21, 6, 4, 9, 8, 31, 30, 47, 27, 1, 11, 5, 12, 10, 3, 0, 7, 28, 41, 29, 33, 15, 48, 14, 13, 2, 38, 45, 23, 16, 18, 49, 34, 40, 43, 39, 51, 25, 44, 46, 50" IsChanceNode() = False IsSimultaneousNode() = False CurrentPlayer() = -4 -ObservationString(0) = " S Q9\n H AT54\n D 75\n C Q9873\nS KT8432 S A76\nH 63 H K2\nD 43 D AKJ982\nC AT2 C 65\n S J5\n H QJ987\n D QT6\n C KJ4\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 D8 DT \n HQ H6 H4 H2 \n CK CT CQ C6 \n DQ D3 D5 D9 \n H7 H3 HT HK \n DK D6 C2 H5 \n D2 SJ S2 S9 \n HJ S8 HA DA \n ST SQ S6 S5 \nC8 S7 CJ SK \n S4 C3 SA H8 \n DJ H9 S3 C9 \n\nTricks taken:\n\nNorth East South West\n1 3 5 4 \n\nScore: N/S -130 E/W -39" -ObservationString(1) = " S Q9\n H AT54\n D 75\n C Q9873\nS KT8432 S A76\nH 63 H K2\nD 43 D AKJ982\nC AT2 C 65\n S J5\n H QJ987\n D QT6\n C KJ4\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 D8 DT \n HQ H6 H4 H2 \n CK CT CQ C6 \n DQ D3 D5 D9 \n H7 H3 HT HK \n DK D6 C2 H5 \n D2 SJ S2 S9 \n HJ S8 HA DA \n ST SQ S6 S5 \nC8 S7 CJ SK \n S4 C3 SA H8 \n DJ H9 S3 C9 \n\nTricks taken:\n\nNorth East South West\n1 3 5 4 \n\nScore: N/S -130 E/W -39" -ObservationString(2) = " S Q9\n H AT54\n D 75\n C Q9873\nS KT8432 S A76\nH 63 H K2\nD 43 D AKJ982\nC AT2 C 65\n S J5\n H QJ987\n D QT6\n C KJ4\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 D8 DT \n HQ H6 H4 H2 \n CK CT CQ C6 \n DQ D3 D5 D9 \n H7 H3 HT HK \n DK D6 C2 H5 \n D2 SJ S2 S9 \n HJ S8 HA DA \n ST SQ S6 S5 \nC8 S7 CJ SK \n S4 C3 SA H8 \n DJ H9 S3 C9 \n\nTricks taken:\n\nNorth East South West\n1 3 5 4 \n\nScore: N/S -130 E/W -39" -ObservationString(3) = " S Q9\n H AT54\n D 75\n C Q9873\nS KT8432 S A76\nH 63 H K2\nD 43 D AKJ982\nC AT2 C 65\n S J5\n H QJ987\n D QT6\n C KJ4\n\nNorth East South West \n11 Nil 2 6 \n\nN E S W N E S\nC7 C5 C4 CA \n D4 D7 D8 DT \n HQ H6 H4 H2 \n CK CT CQ C6 \n DQ D3 D5 D9 \n H7 H3 HT HK \n DK D6 C2 H5 \n D2 SJ S2 S9 \n HJ S8 HA DA \n ST SQ S6 S5 \nC8 S7 CJ SK \n S4 C3 SA H8 \n DJ H9 S3 C9 \n\nTricks taken:\n\nNorth East South West\n1 3 5 4 \n\nScore: N/S -130 E/W -39" -ObservationTensor(0): binvec(578, 0x801200020000800000000000000000000000000000000000000000000000000000000000000000001000000000000000020000000000000004000000000000008004000800100100) -ObservationTensor(1): binvec(578, 0x801200020000800000000000000000000000000000000000000000000000000000000000000000000000200000000000000040000000000000080001000000000004000800100100) -ObservationTensor(2): binvec(578, 0x801200020000800000000000000000000000000000000000000000000000000000000000000000000000000400000000000000800010000000000000000200000004000800100100) -ObservationTensor(3): binvec(578, 0x801200020000800000000000000000000000000000000000000000000000000000000000000000000000000008000100000000000000002000000000000000400004000800100100) -Rewards() = [-130, -39, -130, -39] -Returns() = [-130, -39, -130, -39] +ObservationString(0) = " S K82\n H K64\n D 9852\n C AQT\nS 96 S AT4\nH AT987 H 2\nD JT3 D AKQ764\nC J97 C 853\n S QJ753\n H QJ53\n D \n C K642\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 HK H2 \nD9 DK HQ DT \n C8 C6 CJ CT \n H7 H6 ST H3 \n C3 CK C7 CA \nCQ C5 C2 C9 \nH4 S4 H5 H9 \n D4 SJ D3 D2 \n C4 HA S8 DQ \nD5 D7 SQ HT \n S3 S6 S2 SA \n DA S7 S9 SK \n\nTricks taken:\n\nNorth East South West\n5 4 3 1 \n\nScore: N/S 71 E/W -130" +ObservationString(1) = " S K82\n H K64\n D 9852\n C AQT\nS 96 S AT4\nH AT987 H 2\nD JT3 D AKQ764\nC J97 C 853\n S QJ753\n H QJ53\n D \n C K642\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 HK H2 \nD9 DK HQ DT \n C8 C6 CJ CT \n H7 H6 ST H3 \n C3 CK C7 CA \nCQ C5 C2 C9 \nH4 S4 H5 H9 \n D4 SJ D3 D2 \n C4 HA S8 DQ \nD5 D7 SQ HT \n S3 S6 S2 SA \n DA S7 S9 SK \n\nTricks taken:\n\nNorth East South West\n5 4 3 1 \n\nScore: N/S 71 E/W -130" +ObservationString(2) = " S K82\n H K64\n D 9852\n C AQT\nS 96 S AT4\nH AT987 H 2\nD JT3 D AKQ764\nC J97 C 853\n S QJ753\n H QJ53\n D \n C K642\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 HK H2 \nD9 DK HQ DT \n C8 C6 CJ CT \n H7 H6 ST H3 \n C3 CK C7 CA \nCQ C5 C2 C9 \nH4 S4 H5 H9 \n D4 SJ D3 D2 \n C4 HA S8 DQ \nD5 D7 SQ HT \n S3 S6 S2 SA \n DA S7 S9 SK \n\nTricks taken:\n\nNorth East South West\n5 4 3 1 \n\nScore: N/S 71 E/W -130" +ObservationString(3) = " S K82\n H K64\n D 9852\n C AQT\nS 96 S AT4\nH AT987 H 2\nD JT3 D AKQ764\nC J97 C 853\n S QJ753\n H QJ53\n D \n C K642\n\nNorth East South West \n2 12 5 1 \n\nN E S W N E S\nD8 D6 S5 DJ \n HJ H8 HK H2 \nD9 DK HQ DT \n C8 C6 CJ CT \n H7 H6 ST H3 \n C3 CK C7 CA \nCQ C5 C2 C9 \nH4 S4 H5 H9 \n D4 SJ D3 D2 \n C4 HA S8 DQ \nD5 D7 SQ HT \n S3 S6 S2 SA \n DA S7 S9 SK \n\nTricks taken:\n\nNorth East South West\n5 4 3 1 \n\nScore: N/S 71 E/W -130" +ObservationTensor(0): binvec(578, 0xa00000204010000000000000000000000000000000000000000000000000000000000000000000000000000000020000004000000000000000008000000000000200400400400800) +ObservationTensor(1): binvec(578, 0xa00000204010000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000080000000000002000000000000020400400400800) +ObservationTensor(2): binvec(578, 0xa00000204010000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000020000000000000200000040000000400400400800) +ObservationTensor(3): binvec(578, 0xa00000204010000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000002000000400000000000000000800400400400800) +Rewards() = [71, -130, 71, -130] +Returns() = [71, -130, 71, -130] From 49a6d4b3f9c398388703a99e62c9ac7a48344fd0 Mon Sep 17 00:00:00 2001 From: i-Madsen Date: Mon, 22 Jul 2024 14:28:00 -0500 Subject: [PATCH 4/4] Fixed IsGameOver() return type --- open_spiel/games/spades/spades.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/open_spiel/games/spades/spades.h b/open_spiel/games/spades/spades.h index 4c8ef07a29..f8a886e851 100644 --- a/open_spiel/games/spades/spades.h +++ b/open_spiel/games/spades/spades.h @@ -142,7 +142,7 @@ class SpadesState : public State { } // Indicates if overall game is over (did a partnership meet win/lose condition) - void IsGameOver() const { return is_game_over_; } + bool IsGameOver() const { return is_game_over_; } // Manually set the current player (used to specify starting player) void SetCurrentPlayer(const int current_player) { current_player_ = current_player; }