game: connect_four

GameType.chance_mode = ChanceMode.DETERMINISTIC
GameType.dynamics = Dynamics.SEQUENTIAL
GameType.information = Information.PERFECT_INFORMATION
GameType.long_name = "Connect Four"
GameType.max_num_players = 2
GameType.min_num_players = 2
GameType.parameter_specification = []
GameType.provides_information_state_string = True
GameType.provides_information_state_tensor = False
GameType.provides_observation_string = True
GameType.provides_observation_tensor = True
GameType.provides_factored_observation_string = False
GameType.reward_model = RewardModel.TERMINAL
GameType.short_name = "connect_four"
GameType.utility = Utility.ZERO_SUM

NumDistinctActions() = 7
PolicyTensorShape() = [7]
MaxChanceOutcomes() = 0
GetParameters() = {}
NumPlayers() = 2
MinUtility() = -1.0
MaxUtility() = 1.0
UtilitySum() = 0.0
ObservationTensorShape() = [3, 6, 7]
ObservationTensorLayout() = TensorLayout.CHW
ObservationTensorSize() = 126
MaxGameLength() = 42
ToString() = "connect_four()"

# State 0
# .......
# .......
# .......
# .......
# .......
# .......
IsTerminal() = False
History() = []
HistoryString() = ""
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = ""
InformationStateString(1) = ""
ObservationString(0) = ".......\n.......\n.......\n.......\n.......\n.......\n"
ObservationString(1) = ".......\n.......\n.......\n.......\n.......\n.......\n"
PublicObservationString() = ".......\n.......\n.......\n.......\n.......\n.......\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
ObservationTensor(1):
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 4, 5, 6]
StringLegalActions() = ["x0", "x1", "x2", "x3", "x4", "x5", "x6"]

# Apply action "x0"
action: 0

# State 1
# .......
# .......
# .......
# .......
# .......
# x......
IsTerminal() = False
History() = [0]
HistoryString() = "0"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "0"
InformationStateString(1) = "0"
ObservationString(0) = ".......\n.......\n.......\n.......\n.......\nx......\n"
ObservationString(1) = ".......\n.......\n.......\n.......\n.......\nx......\n"
PublicObservationString() = ".......\n.......\n.......\n.......\n.......\nx......\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◯◯◯◯◯◯  ◉◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
ObservationTensor(1):
◉◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 4, 5, 6]
StringLegalActions() = ["o0", "o1", "o2", "o3", "o4", "o5", "o6"]

# Apply action "o1"
action: 1

# State 2
# .......
# .......
# .......
# .......
# .......
# xo.....
IsTerminal() = False
History() = [0, 1]
HistoryString() = "0, 1"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "0, 1"
InformationStateString(1) = "0, 1"
ObservationString(0) = ".......\n.......\n.......\n.......\n.......\nxo.....\n"
ObservationString(1) = ".......\n.......\n.......\n.......\n.......\nxo.....\n"
PublicObservationString() = ".......\n.......\n.......\n.......\n.......\nxo.....\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◉◯◯◯◯◯  ◉◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
ObservationTensor(1):
◉◯◯◯◯◯◯  ◯◉◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 4, 5, 6]
StringLegalActions() = ["x0", "x1", "x2", "x3", "x4", "x5", "x6"]

# Apply action "x2"
action: 2

# State 3
# .......
# .......
# .......
# .......
# .......
# xox....
IsTerminal() = False
History() = [0, 1, 2]
HistoryString() = "0, 1, 2"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "0, 1, 2"
InformationStateString(1) = "0, 1, 2"
ObservationString(0) = ".......\n.......\n.......\n.......\n.......\nxox....\n"
ObservationString(1) = ".......\n.......\n.......\n.......\n.......\nxox....\n"
PublicObservationString() = ".......\n.......\n.......\n.......\n.......\nxox....\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◉◯◯◯◯◯  ◉◯◉◯◯◯◯  ◯◯◯◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
ObservationTensor(1):
◉◯◉◯◯◯◯  ◯◉◯◯◯◯◯  ◯◯◯◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 4, 5, 6]
StringLegalActions() = ["o0", "o1", "o2", "o3", "o4", "o5", "o6"]

# Apply action "o6"
action: 6

# State 4
# .......
# .......
# .......
# .......
# .......
# xox...o
IsTerminal() = False
History() = [0, 1, 2, 6]
HistoryString() = "0, 1, 2, 6"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "0, 1, 2, 6"
InformationStateString(1) = "0, 1, 2, 6"
ObservationString(0) = ".......\n.......\n.......\n.......\n.......\nxox...o\n"
ObservationString(1) = ".......\n.......\n.......\n.......\n.......\nxox...o\n"
PublicObservationString() = ".......\n.......\n.......\n.......\n.......\nxox...o\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◉◯◯◯◯◉  ◉◯◉◯◯◯◯  ◯◯◯◉◉◉◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
ObservationTensor(1):
◉◯◉◯◯◯◯  ◯◉◯◯◯◯◉  ◯◯◯◉◉◉◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 4, 5, 6]
StringLegalActions() = ["x0", "x1", "x2", "x3", "x4", "x5", "x6"]

# Apply action "x4"
action: 4

# State 5
# .......
# .......
# .......
# .......
# .......
# xox.x.o
IsTerminal() = False
History() = [0, 1, 2, 6, 4]
HistoryString() = "0, 1, 2, 6, 4"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "0, 1, 2, 6, 4"
InformationStateString(1) = "0, 1, 2, 6, 4"
ObservationString(0) = ".......\n.......\n.......\n.......\n.......\nxox.x.o\n"
ObservationString(1) = ".......\n.......\n.......\n.......\n.......\nxox.x.o\n"
PublicObservationString() = ".......\n.......\n.......\n.......\n.......\nxox.x.o\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◉◯◯◯◯◉  ◉◯◉◯◉◯◯  ◯◯◯◉◯◉◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
ObservationTensor(1):
◉◯◉◯◉◯◯  ◯◉◯◯◯◯◉  ◯◯◯◉◯◉◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 4, 5, 6]
StringLegalActions() = ["o0", "o1", "o2", "o3", "o4", "o5", "o6"]

# Apply action "o1"
action: 1

# State 6
# .......
# .......
# .......
# .......
# .o.....
# xox.x.o
IsTerminal() = False
History() = [0, 1, 2, 6, 4, 1]
HistoryString() = "0, 1, 2, 6, 4, 1"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "0, 1, 2, 6, 4, 1"
InformationStateString(1) = "0, 1, 2, 6, 4, 1"
ObservationString(0) = ".......\n.......\n.......\n.......\n.o.....\nxox.x.o\n"
ObservationString(1) = ".......\n.......\n.......\n.......\n.o.....\nxox.x.o\n"
PublicObservationString() = ".......\n.......\n.......\n.......\n.o.....\nxox.x.o\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◉◯◯◯◯◉  ◉◯◉◯◉◯◯  ◯◯◯◉◯◉◯
◯◉◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
ObservationTensor(1):
◉◯◉◯◉◯◯  ◯◉◯◯◯◯◉  ◯◯◯◉◯◉◯
◯◯◯◯◯◯◯  ◯◉◯◯◯◯◯  ◉◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 4, 5, 6]
StringLegalActions() = ["x0", "x1", "x2", "x3", "x4", "x5", "x6"]

# Apply action "x0"
action: 0

# State 7
# .......
# .......
# .......
# .......
# xo.....
# xox.x.o
IsTerminal() = False
History() = [0, 1, 2, 6, 4, 1, 0]
HistoryString() = "0, 1, 2, 6, 4, 1, 0"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "0, 1, 2, 6, 4, 1, 0"
InformationStateString(1) = "0, 1, 2, 6, 4, 1, 0"
ObservationString(0) = ".......\n.......\n.......\n.......\nxo.....\nxox.x.o\n"
ObservationString(1) = ".......\n.......\n.......\n.......\nxo.....\nxox.x.o\n"
PublicObservationString() = ".......\n.......\n.......\n.......\nxo.....\nxox.x.o\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◉◯◯◯◯◉  ◉◯◉◯◉◯◯  ◯◯◯◉◯◉◯
◯◉◯◯◯◯◯  ◉◯◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
ObservationTensor(1):
◉◯◉◯◉◯◯  ◯◉◯◯◯◯◉  ◯◯◯◉◯◉◯
◉◯◯◯◯◯◯  ◯◉◯◯◯◯◯  ◯◯◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 4, 5, 6]
StringLegalActions() = ["o0", "o1", "o2", "o3", "o4", "o5", "o6"]

# Apply action "o2"
action: 2

# State 8
# .......
# .......
# .......
# .......
# xoo....
# xox.x.o
IsTerminal() = False
History() = [0, 1, 2, 6, 4, 1, 0, 2]
HistoryString() = "0, 1, 2, 6, 4, 1, 0, 2"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "0, 1, 2, 6, 4, 1, 0, 2"
InformationStateString(1) = "0, 1, 2, 6, 4, 1, 0, 2"
ObservationString(0) = ".......\n.......\n.......\n.......\nxoo....\nxox.x.o\n"
ObservationString(1) = ".......\n.......\n.......\n.......\nxoo....\nxox.x.o\n"
PublicObservationString() = ".......\n.......\n.......\n.......\nxoo....\nxox.x.o\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◉◯◯◯◯◉  ◉◯◉◯◉◯◯  ◯◯◯◉◯◉◯
◯◉◉◯◯◯◯  ◉◯◯◯◯◯◯  ◯◯◯◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
ObservationTensor(1):
◉◯◉◯◉◯◯  ◯◉◯◯◯◯◉  ◯◯◯◉◯◉◯
◉◯◯◯◯◯◯  ◯◉◉◯◯◯◯  ◯◯◯◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 4, 5, 6]
StringLegalActions() = ["x0", "x1", "x2", "x3", "x4", "x5", "x6"]

# Apply action "x6"
action: 6

# State 9
# .......
# .......
# .......
# .......
# xoo...x
# xox.x.o
IsTerminal() = False
History() = [0, 1, 2, 6, 4, 1, 0, 2, 6]
HistoryString() = "0, 1, 2, 6, 4, 1, 0, 2, 6"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "0, 1, 2, 6, 4, 1, 0, 2, 6"
InformationStateString(1) = "0, 1, 2, 6, 4, 1, 0, 2, 6"
ObservationString(0) = ".......\n.......\n.......\n.......\nxoo...x\nxox.x.o\n"
ObservationString(1) = ".......\n.......\n.......\n.......\nxoo...x\nxox.x.o\n"
PublicObservationString() = ".......\n.......\n.......\n.......\nxoo...x\nxox.x.o\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◉◯◯◯◯◉  ◉◯◉◯◉◯◯  ◯◯◯◉◯◉◯
◯◉◉◯◯◯◯  ◉◯◯◯◯◯◉  ◯◯◯◉◉◉◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
ObservationTensor(1):
◉◯◉◯◉◯◯  ◯◉◯◯◯◯◉  ◯◯◯◉◯◉◯
◉◯◯◯◯◯◉  ◯◉◉◯◯◯◯  ◯◯◯◉◉◉◯
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 4, 5, 6]
StringLegalActions() = ["o0", "o1", "o2", "o3", "o4", "o5", "o6"]

# Apply action "o0"
action: 0

# State 10
# .......
# .......
# .......
# o......
# xoo...x
# xox.x.o
IsTerminal() = False
History() = [0, 1, 2, 6, 4, 1, 0, 2, 6, 0]
HistoryString() = "0, 1, 2, 6, 4, 1, 0, 2, 6, 0"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "0, 1, 2, 6, 4, 1, 0, 2, 6, 0"
InformationStateString(1) = "0, 1, 2, 6, 4, 1, 0, 2, 6, 0"
ObservationString(0) = ".......\n.......\n.......\no......\nxoo...x\nxox.x.o\n"
ObservationString(1) = ".......\n.......\n.......\no......\nxoo...x\nxox.x.o\n"
PublicObservationString() = ".......\n.......\n.......\no......\nxoo...x\nxox.x.o\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◉◯◯◯◯◉  ◉◯◉◯◉◯◯  ◯◯◯◉◯◉◯
◯◉◉◯◯◯◯  ◉◯◯◯◯◯◉  ◯◯◯◉◉◉◯
◉◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
ObservationTensor(1):
◉◯◉◯◉◯◯  ◯◉◯◯◯◯◉  ◯◯◯◉◯◉◯
◉◯◯◯◯◯◉  ◯◉◉◯◯◯◯  ◯◯◯◉◉◉◯
◯◯◯◯◯◯◯  ◉◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 4, 5, 6]
StringLegalActions() = ["x0", "x1", "x2", "x3", "x4", "x5", "x6"]

# Apply action "x5"
action: 5

# State 11
# .......
# .......
# .......
# o......
# xoo...x
# xox.xxo
IsTerminal() = False
History() = [0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5]
HistoryString() = "0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5"
InformationStateString(1) = "0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5"
ObservationString(0) = ".......\n.......\n.......\no......\nxoo...x\nxox.xxo\n"
ObservationString(1) = ".......\n.......\n.......\no......\nxoo...x\nxox.xxo\n"
PublicObservationString() = ".......\n.......\n.......\no......\nxoo...x\nxox.xxo\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◉◯◯◯◯◉  ◉◯◉◯◉◉◯  ◯◯◯◉◯◯◯
◯◉◉◯◯◯◯  ◉◯◯◯◯◯◉  ◯◯◯◉◉◉◯
◉◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
ObservationTensor(1):
◉◯◉◯◉◉◯  ◯◉◯◯◯◯◉  ◯◯◯◉◯◯◯
◉◯◯◯◯◯◉  ◯◉◉◯◯◯◯  ◯◯◯◉◉◉◯
◯◯◯◯◯◯◯  ◉◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 4, 5, 6]
StringLegalActions() = ["o0", "o1", "o2", "o3", "o4", "o5", "o6"]

# Apply action "o4"
action: 4

# State 12
# .......
# .......
# .......
# o......
# xoo.o.x
# xox.xxo
IsTerminal() = False
History() = [0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5, 4]
HistoryString() = "0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5, 4"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5, 4"
InformationStateString(1) = "0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5, 4"
ObservationString(0) = ".......\n.......\n.......\no......\nxoo.o.x\nxox.xxo\n"
ObservationString(1) = ".......\n.......\n.......\no......\nxoo.o.x\nxox.xxo\n"
PublicObservationString() = ".......\n.......\n.......\no......\nxoo.o.x\nxox.xxo\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◉◯◯◯◯◉  ◉◯◉◯◉◉◯  ◯◯◯◉◯◯◯
◯◉◉◯◉◯◯  ◉◯◯◯◯◯◉  ◯◯◯◉◯◉◯
◉◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
ObservationTensor(1):
◉◯◉◯◉◉◯  ◯◉◯◯◯◯◉  ◯◯◯◉◯◯◯
◉◯◯◯◯◯◉  ◯◉◉◯◉◯◯  ◯◯◯◉◯◉◯
◯◯◯◯◯◯◯  ◉◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 4, 5, 6]
StringLegalActions() = ["x0", "x1", "x2", "x3", "x4", "x5", "x6"]

# Apply action "x0"
action: 0

# State 13
# .......
# .......
# x......
# o......
# xoo.o.x
# xox.xxo
IsTerminal() = False
History() = [0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5, 4, 0]
HistoryString() = "0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5, 4, 0"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5, 4, 0"
InformationStateString(1) = "0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5, 4, 0"
ObservationString(0) = ".......\n.......\nx......\no......\nxoo.o.x\nxox.xxo\n"
ObservationString(1) = ".......\n.......\nx......\no......\nxoo.o.x\nxox.xxo\n"
PublicObservationString() = ".......\n.......\nx......\no......\nxoo.o.x\nxox.xxo\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◉◯◯◯◯◉  ◉◯◉◯◉◉◯  ◯◯◯◉◯◯◯
◯◉◉◯◉◯◯  ◉◯◯◯◯◯◉  ◯◯◯◉◯◉◯
◉◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◉◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
ObservationTensor(1):
◉◯◉◯◉◉◯  ◯◉◯◯◯◯◉  ◯◯◯◉◯◯◯
◉◯◯◯◯◯◉  ◯◉◉◯◉◯◯  ◯◯◯◉◯◉◯
◯◯◯◯◯◯◯  ◉◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◉◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 4, 5, 6]
StringLegalActions() = ["o0", "o1", "o2", "o3", "o4", "o5", "o6"]

# Apply action "o6"
action: 6

# State 14
# .......
# .......
# x......
# o.....o
# xoo.o.x
# xox.xxo
IsTerminal() = False
History() = [0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5, 4, 0, 6]
HistoryString() = "0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5, 4, 0, 6"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5, 4, 0, 6"
InformationStateString(1) = "0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5, 4, 0, 6"
ObservationString(0) = ".......\n.......\nx......\no.....o\nxoo.o.x\nxox.xxo\n"
ObservationString(1) = ".......\n.......\nx......\no.....o\nxoo.o.x\nxox.xxo\n"
PublicObservationString() = ".......\n.......\nx......\no.....o\nxoo.o.x\nxox.xxo\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◉◯◯◯◯◉  ◉◯◉◯◉◉◯  ◯◯◯◉◯◯◯
◯◉◉◯◉◯◯  ◉◯◯◯◯◯◉  ◯◯◯◉◯◉◯
◉◯◯◯◯◯◉  ◯◯◯◯◯◯◯  ◯◉◉◉◉◉◯
◯◯◯◯◯◯◯  ◉◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
ObservationTensor(1):
◉◯◉◯◉◉◯  ◯◉◯◯◯◯◉  ◯◯◯◉◯◯◯
◉◯◯◯◯◯◉  ◯◉◉◯◉◯◯  ◯◯◯◉◯◉◯
◯◯◯◯◯◯◯  ◉◯◯◯◯◯◉  ◯◉◉◉◉◉◯
◉◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 4, 5, 6]
StringLegalActions() = ["x0", "x1", "x2", "x3", "x4", "x5", "x6"]

# Apply action "x5"
action: 5

# State 15
# .......
# .......
# x......
# o.....o
# xoo.oxx
# xox.xxo
IsTerminal() = False
History() = [0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5, 4, 0, 6, 5]
HistoryString() = "0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5, 4, 0, 6, 5"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5, 4, 0, 6, 5"
InformationStateString(1) = "0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5, 4, 0, 6, 5"
ObservationString(0) = ".......\n.......\nx......\no.....o\nxoo.oxx\nxox.xxo\n"
ObservationString(1) = ".......\n.......\nx......\no.....o\nxoo.oxx\nxox.xxo\n"
PublicObservationString() = ".......\n.......\nx......\no.....o\nxoo.oxx\nxox.xxo\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◉◯◯◯◯◉  ◉◯◉◯◉◉◯  ◯◯◯◉◯◯◯
◯◉◉◯◉◯◯  ◉◯◯◯◯◉◉  ◯◯◯◉◯◯◯
◉◯◯◯◯◯◉  ◯◯◯◯◯◯◯  ◯◉◉◉◉◉◯
◯◯◯◯◯◯◯  ◉◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
ObservationTensor(1):
◉◯◉◯◉◉◯  ◯◉◯◯◯◯◉  ◯◯◯◉◯◯◯
◉◯◯◯◯◉◉  ◯◉◉◯◉◯◯  ◯◯◯◉◯◯◯
◯◯◯◯◯◯◯  ◉◯◯◯◯◯◉  ◯◉◉◉◉◉◯
◉◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 4, 5, 6]
StringLegalActions() = ["o0", "o1", "o2", "o3", "o4", "o5", "o6"]

# Apply action "o0"
action: 0

# State 16
# .......
# o......
# x......
# o.....o
# xoo.oxx
# xox.xxo
IsTerminal() = False
History() = [0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5, 4, 0, 6, 5, 0]
HistoryString() = "0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5, 4, 0, 6, 5, 0"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5, 4, 0, 6, 5, 0"
InformationStateString(1) = "0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5, 4, 0, 6, 5, 0"
ObservationString(0) = ".......\no......\nx......\no.....o\nxoo.oxx\nxox.xxo\n"
ObservationString(1) = ".......\no......\nx......\no.....o\nxoo.oxx\nxox.xxo\n"
PublicObservationString() = ".......\no......\nx......\no.....o\nxoo.oxx\nxox.xxo\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◉◯◯◯◯◉  ◉◯◉◯◉◉◯  ◯◯◯◉◯◯◯
◯◉◉◯◉◯◯  ◉◯◯◯◯◉◉  ◯◯◯◉◯◯◯
◉◯◯◯◯◯◉  ◯◯◯◯◯◯◯  ◯◉◉◉◉◉◯
◯◯◯◯◯◯◯  ◉◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◉◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
ObservationTensor(1):
◉◯◉◯◉◉◯  ◯◉◯◯◯◯◉  ◯◯◯◉◯◯◯
◉◯◯◯◯◉◉  ◯◉◉◯◉◯◯  ◯◯◯◉◯◯◯
◯◯◯◯◯◯◯  ◉◯◯◯◯◯◉  ◯◉◉◉◉◉◯
◉◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◉◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 4, 5, 6]
StringLegalActions() = ["x0", "x1", "x2", "x3", "x4", "x5", "x6"]

# Apply action "x3"
action: 3

# State 17
# .......
# o......
# x......
# o.....o
# xoo.oxx
# xoxxxxo
IsTerminal() = True
History() = [0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5, 4, 0, 6, 5, 0, 3]
HistoryString() = "0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5, 4, 0, 6, 5, 0, 3"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = -4
InformationStateString(0) = "0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5, 4, 0, 6, 5, 0, 3"
InformationStateString(1) = "0, 1, 2, 6, 4, 1, 0, 2, 6, 0, 5, 4, 0, 6, 5, 0, 3"
ObservationString(0) = ".......\no......\nx......\no.....o\nxoo.oxx\nxoxxxxo\n"
ObservationString(1) = ".......\no......\nx......\no.....o\nxoo.oxx\nxoxxxxo\n"
PublicObservationString() = ".......\no......\nx......\no.....o\nxoo.oxx\nxoxxxxo\n"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0):
◯◉◯◯◯◯◉  ◉◯◉◉◉◉◯  ◯◯◯◯◯◯◯
◯◉◉◯◉◯◯  ◉◯◯◯◯◉◉  ◯◯◯◉◯◯◯
◉◯◯◯◯◯◉  ◯◯◯◯◯◯◯  ◯◉◉◉◉◉◯
◯◯◯◯◯◯◯  ◉◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◉◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
ObservationTensor(1):
◉◯◉◉◉◉◯  ◯◉◯◯◯◯◉  ◯◯◯◯◯◯◯
◉◯◯◯◯◉◉  ◯◉◉◯◉◯◯  ◯◯◯◉◯◯◯
◯◯◯◯◯◯◯  ◉◯◯◯◯◯◉  ◯◉◉◉◉◉◯
◉◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◉◯◯◯◯◯◯  ◯◉◉◉◉◉◉
◯◯◯◯◯◯◯  ◯◯◯◯◯◯◯  ◉◉◉◉◉◉◉
Rewards() = [1.0, -1.0]
Returns() = [1.0, -1.0]
