From dd7eb68cb9b94732b6c33253f6d87df83e54afc7 Mon Sep 17 00:00:00 2001 From: drdkad Date: Fri, 28 Mar 2025 09:59:29 +0000 Subject: [PATCH] change type of GamePlayerRep::m_infosets from Array to std::vector --- src/games/game.cc | 6 +++--- src/games/game.h | 2 +- src/games/gametree.cc | 22 +++++++++++----------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/games/game.cc b/src/games/game.cc index e06c030ac..9968739d5 100644 --- a/src/games/game.cc +++ b/src/games/game.cc @@ -123,8 +123,8 @@ void GamePlayerRep::MakeStrategy() Array c(NumInfosets()); for (int i = 1; i <= NumInfosets(); i++) { - if (m_infosets[i]->flag == 1) { - c[i] = m_infosets[i]->whichbranch; + if (m_infosets[i - 1]->flag == 1) { + c[i] = m_infosets[i - 1]->whichbranch; } else { c[i] = 0; @@ -219,7 +219,7 @@ void GamePlayerRep::MakeReducedStrats(GameTreeNodeRep *n, GameTreeNodeRep *nn) } } -GameInfoset GamePlayerRep::GetInfoset(int p_index) const { return m_infosets[p_index]; } +GameInfoset GamePlayerRep::GetInfoset(int p_index) const { return m_infosets[p_index - 1]; } Array GamePlayerRep::GetInfosets() const { diff --git a/src/games/game.h b/src/games/game.h index bb4f6a2bc..36b8581de 100644 --- a/src/games/game.h +++ b/src/games/game.h @@ -289,7 +289,7 @@ class GamePlayerRep : public GameObject { GameRep *m_game; int m_number; std::string m_label; - Array m_infosets; + std::vector m_infosets; Array m_strategies; GamePlayerRep(GameRep *p_game, int p_id) : m_game(p_game), m_number(p_id) {} diff --git a/src/games/gametree.cc b/src/games/gametree.cc index e32c6b493..419e92183 100644 --- a/src/games/gametree.cc +++ b/src/games/gametree.cc @@ -744,9 +744,9 @@ bool GameTreeRep::IsPerfectRecall(GameInfoset &s1, GameInfoset &s2) const { for (auto player : m_players) { for (int i = 1; i <= player->NumInfosets(); i++) { - GameTreeInfosetRep *iset1 = player->m_infosets[i]; + GameTreeInfosetRep *iset1 = player->m_infosets[i - 1]; for (int j = 1; j <= player->NumInfosets(); j++) { - GameTreeInfosetRep *iset2 = player->m_infosets[j]; + GameTreeInfosetRep *iset2 = player->m_infosets[j - 1]; bool precedes = false; int action = 0; @@ -816,7 +816,7 @@ void GameTreeRep::Canonicalize() // Coded using a bubble sort for simplicity; large games might // find a quicksort worthwhile. for (int iset = 1; iset <= player->m_infosets.size(); iset++) { - GameTreeInfosetRep *infoset = player->m_infosets[iset]; + GameTreeInfosetRep *infoset = player->m_infosets[iset - 1]; for (int i = 1; i < infoset->m_members.size(); i++) { for (int j = 1; j < infoset->m_members.size() - i; j++) { if (infoset->m_members[j + 1]->m_number < infoset->m_members[j]->m_number) { @@ -833,24 +833,24 @@ void GameTreeRep::Canonicalize() // find a quicksort worthwhile. for (int i = 1; i < player->m_infosets.size(); i++) { for (int j = 1; j < player->m_infosets.size() - i; j++) { - int a = ((player->m_infosets[j + 1]->m_members.size()) - ? player->m_infosets[j + 1]->m_members[1]->m_number - : 0); - int b = ((player->m_infosets[j]->m_members.size()) + int a = ((player->m_infosets[j]->m_members.size()) ? player->m_infosets[j]->m_members[1]->m_number : 0); + int b = ((player->m_infosets[j - 1]->m_members.size()) + ? player->m_infosets[j - 1]->m_members[1]->m_number + : 0); if (a < b || b == 0) { - GameTreeInfosetRep *tmp = player->m_infosets[j]; - player->m_infosets[j] = player->m_infosets[j + 1]; - player->m_infosets[j + 1] = tmp; + GameTreeInfosetRep *tmp = player->m_infosets[j - 1]; + player->m_infosets[j - 1] = player->m_infosets[j]; + player->m_infosets[j] = tmp; } } } // Reassign information set IDs for (int iset = 1; iset <= player->m_infosets.size(); iset++) { - player->m_infosets[iset]->m_number = iset; + player->m_infosets[iset - 1]->m_number = iset; } } }