game: python_kuhn_poker

GameType.chance_mode = ChanceMode.EXPLICIT_STOCHASTIC
GameType.dynamics = Dynamics.SEQUENTIAL
GameType.information = Information.IMPERFECT_INFORMATION
GameType.long_name = "Python Kuhn Poker"
GameType.max_num_players = 2
GameType.min_num_players = 2
GameType.parameter_specification = []
GameType.provides_information_state_string = True
GameType.provides_information_state_tensor = True
GameType.provides_observation_string = True
GameType.provides_observation_tensor = True
GameType.provides_factored_observation_string = True
GameType.reward_model = RewardModel.TERMINAL
GameType.short_name = "python_kuhn_poker"
GameType.utility = Utility.ZERO_SUM

NumDistinctActions() = 2
PolicyTensorShape() = [2]
MaxChanceOutcomes() = 3
GetParameters() = {}
NumPlayers() = 2
MinUtility() = -2.0
MaxUtility() = 2.0
UtilitySum() = 0.0
InformationStateTensorShape() = player: [2], private_card: [3], betting: [3, 2]
InformationStateTensorLayout() = TensorLayout.CHW
InformationStateTensorSize() = 11
ObservationTensorShape() = player: [2], private_card: [3], pot_contribution: [2]
ObservationTensorLayout() = TensorLayout.CHW
ObservationTensorSize() = 7
MaxGameLength() = 3
ToString() = "python_kuhn_poker()"

# State 0
IsTerminal() = False
History() = []
HistoryString() = ""
IsChanceNode() = True
IsSimultaneousNode() = False
CurrentPlayer() = PlayerId.CHANCE
InformationStateString(0) = "p0"
InformationStateString(1) = "p1"
InformationStateTensor(0).player: ◉◯
InformationStateTensor(0).private_card: ◯◯◯
InformationStateTensor(0).betting: ◯◯
                                   ◯◯
                                   ◯◯
InformationStateTensor(1).player: ◯◉
InformationStateTensor(1).private_card: ◯◯◯
InformationStateTensor(1).betting: ◯◯
                                   ◯◯
                                   ◯◯
ObservationString(0) = "p0 pot[1 1]"
ObservationString(1) = "p1 pot[1 1]"
PublicObservationString() = "p0 pot[1 1]"
PrivateObservationString(0) = "p0"
PrivateObservationString(1) = "p1"
ObservationTensor(0).player: ◉◯
ObservationTensor(0).private_card: ◯◯◯
ObservationTensor(0).pot_contribution: ◉◉
ObservationTensor(1).player: ◯◉
ObservationTensor(1).private_card: ◯◯◯
ObservationTensor(1).pot_contribution: ◉◉
ChanceOutcomes() = [{0, 0.333333333333}, {1, 0.333333333333}, {2, 0.333333333333}]
LegalActions() = [0, 1, 2]
StringLegalActions() = ["Deal:0", "Deal:1", "Deal:2"]

# Apply action "Deal:1"
action: 1

# State 1
# 1
IsTerminal() = False
History() = [1]
HistoryString() = "1"
IsChanceNode() = True
IsSimultaneousNode() = False
CurrentPlayer() = PlayerId.CHANCE
InformationStateString(0) = "p0 card:1"
InformationStateString(1) = "p1"
InformationStateTensor(0).player: ◉◯
InformationStateTensor(0).private_card: ◯◉◯
InformationStateTensor(0).betting: ◯◯
                                   ◯◯
                                   ◯◯
InformationStateTensor(1).player: ◯◉
InformationStateTensor(1).private_card: ◯◯◯
InformationStateTensor(1).betting: ◯◯
                                   ◯◯
                                   ◯◯
ObservationString(0) = "p0 card:1 pot[1 1]"
ObservationString(1) = "p1 pot[1 1]"
PublicObservationString() = "p0 pot[1 1]"
PrivateObservationString(0) = "p0 card:1"
PrivateObservationString(1) = "p1"
ObservationTensor(0).player: ◉◯
ObservationTensor(0).private_card: ◯◉◯
ObservationTensor(0).pot_contribution: ◉◉
ObservationTensor(1).player: ◯◉
ObservationTensor(1).private_card: ◯◯◯
ObservationTensor(1).pot_contribution: ◉◉
ChanceOutcomes() = [{0, 0.500000000000}, {2, 0.500000000000}]
LegalActions() = [0, 2]
StringLegalActions() = ["Deal:0", "Deal:2"]

# Apply action "Deal:2"
action: 2

# State 2
# 12
IsTerminal() = False
History() = [1, 2]
HistoryString() = "1, 2"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "p0 card:1"
InformationStateString(1) = "p1 card:2"
InformationStateTensor(0).player: ◉◯
InformationStateTensor(0).private_card: ◯◉◯
InformationStateTensor(0).betting: ◯◯
                                   ◯◯
                                   ◯◯
InformationStateTensor(1).player: ◯◉
InformationStateTensor(1).private_card: ◯◯◉
InformationStateTensor(1).betting: ◯◯
                                   ◯◯
                                   ◯◯
ObservationString(0) = "p0 card:1 pot[1 1]"
ObservationString(1) = "p1 card:2 pot[1 1]"
PublicObservationString() = "p0 pot[1 1]"
PrivateObservationString(0) = "p0 card:1"
PrivateObservationString(1) = "p1 card:2"
ObservationTensor(0).player: ◉◯
ObservationTensor(0).private_card: ◯◉◯
ObservationTensor(0).pot_contribution: ◉◉
ObservationTensor(1).player: ◯◉
ObservationTensor(1).private_card: ◯◯◉
ObservationTensor(1).pot_contribution: ◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1]
StringLegalActions() = ["Pass", "Bet"]

# Apply action "Pass"
action: 0

# State 3
# 12p
IsTerminal() = False
History() = [1, 2, 0]
HistoryString() = "1, 2, 0"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "p0 card:1 p"
InformationStateString(1) = "p1 card:2 p"
InformationStateTensor(0).player: ◉◯
InformationStateTensor(0).private_card: ◯◉◯
InformationStateTensor(0).betting: ◉◯
                                   ◯◯
                                   ◯◯
InformationStateTensor(1).player: ◯◉
InformationStateTensor(1).private_card: ◯◯◉
InformationStateTensor(1).betting: ◉◯
                                   ◯◯
                                   ◯◯
ObservationString(0) = "p0 card:1 pot[1 1]"
ObservationString(1) = "p1 card:2 pot[1 1]"
PublicObservationString() = "p0 pot[1 1]"
PrivateObservationString(0) = "p0 card:1"
PrivateObservationString(1) = "p1 card:2"
ObservationTensor(0).player: ◉◯
ObservationTensor(0).private_card: ◯◉◯
ObservationTensor(0).pot_contribution: ◉◉
ObservationTensor(1).player: ◯◉
ObservationTensor(1).private_card: ◯◯◉
ObservationTensor(1).pot_contribution: ◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1]
StringLegalActions() = ["Pass", "Bet"]

# Apply action "Pass"
action: 0

# State 4
# 12pp
IsTerminal() = True
History() = [1, 2, 0, 0]
HistoryString() = "1, 2, 0, 0"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = PlayerId.TERMINAL
InformationStateString(0) = "p0 card:1 pp"
InformationStateString(1) = "p1 card:2 pp"
InformationStateTensor(0).player: ◉◯
InformationStateTensor(0).private_card: ◯◉◯
InformationStateTensor(0).betting: ◉◯
                                   ◉◯
                                   ◯◯
InformationStateTensor(1).player: ◯◉
InformationStateTensor(1).private_card: ◯◯◉
InformationStateTensor(1).betting: ◉◯
                                   ◉◯
                                   ◯◯
ObservationString(0) = "p0 card:1 pot[1 1]"
ObservationString(1) = "p1 card:2 pot[1 1]"
PublicObservationString() = "p0 pot[1 1]"
PrivateObservationString(0) = "p0 card:1"
PrivateObservationString(1) = "p1 card:2"
ObservationTensor(0).player: ◉◯
ObservationTensor(0).private_card: ◯◉◯
ObservationTensor(0).pot_contribution: ◉◉
ObservationTensor(1).player: ◯◉
ObservationTensor(1).private_card: ◯◯◉
ObservationTensor(1).pot_contribution: ◉◉
Rewards() = [-1.0, 1.0]
Returns() = [-1.0, 1.0]
