improve printing
This commit is contained in:
parent
76c10dc381
commit
df559929b0
2 changed files with 24 additions and 18 deletions
|
@ -55,13 +55,12 @@ namespace Hanabi {
|
||||||
|
|
||||||
template<size_t num_suits>
|
template<size_t num_suits>
|
||||||
std::ostream &operator<<(std::ostream &os, const Stacks<num_suits> &stacks) {
|
std::ostream &operator<<(std::ostream &os, const Stacks<num_suits> &stacks) {
|
||||||
for (size_t i = 0; i < stacks.size() - 1; i++) {
|
for (size_t i = 0; i < stacks.size(); i++) {
|
||||||
os << starting_card_rank - stacks[i];
|
os << suit_initials[i] << starting_card_rank - stacks[i];
|
||||||
if(i < stacks.size() - 1) {
|
if(i < stacks.size() - 1) {
|
||||||
os << ", ";
|
os << ", ";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
os << starting_card_rank - stacks.back();
|
|
||||||
return os;
|
return os;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -235,22 +234,38 @@ namespace Hanabi {
|
||||||
template<suit_t num_suits, player_t num_players, hand_index_t hand_size>
|
template<suit_t num_suits, player_t num_players, hand_index_t hand_size>
|
||||||
void HanabiState<num_suits, num_players, hand_size>::print(std::ostream &os) const {
|
void HanabiState<num_suits, num_players, hand_size>::print(std::ostream &os) const {
|
||||||
os << "Stacks: " << _stacks << " (score " << +_score << ")";
|
os << "Stacks: " << _stacks << " (score " << +_score << ")";
|
||||||
os << ", clues: " << +_num_clues << ", turn: " << +_turn << std::endl;
|
os << ", clues: " << +_num_clues << ", turn: " << +_turn;
|
||||||
|
if (_endgame_turns_left != no_endgame) {
|
||||||
|
os << ", " << +_endgame_turns_left << " turns left";
|
||||||
|
}
|
||||||
|
os << std::endl;
|
||||||
os << "Draw pile: ";
|
os << "Draw pile: ";
|
||||||
|
unsigned num_trash = 0;
|
||||||
for (const auto &[card, mul]: _draw_pile) {
|
for (const auto &[card, mul]: _draw_pile) {
|
||||||
|
if (is_trash(card)) {
|
||||||
|
num_trash += mul;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
os << card;
|
os << card;
|
||||||
if (mul > 1) {
|
if (mul > 1) {
|
||||||
os << " (" << +mul << ")";
|
os << " (" << +mul << ")";
|
||||||
}
|
}
|
||||||
os << ", ";
|
os << ", ";
|
||||||
}
|
}
|
||||||
os << "(size " << +_weighted_draw_pile_size << ")" << std::endl;
|
if (num_trash > 0) {
|
||||||
|
os << Cards::trash << " (" << num_trash << ") ";
|
||||||
|
}
|
||||||
|
os << "[size " << +_weighted_draw_pile_size << "]" << std::endl;
|
||||||
os << "Hands: ";
|
os << "Hands: ";
|
||||||
for (const auto &hand: _hands) {
|
for (const auto &hand: _hands) {
|
||||||
for (const auto &card: hand) {
|
os << "[";
|
||||||
os << card << ", ";
|
for(hand_index_t index = 0; index < hand.size(); index++) {
|
||||||
|
os << hand[index];
|
||||||
|
if (index < hand.size() - 1) {
|
||||||
|
os << " ";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
os << " | ";
|
os << "] ";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
11
main.cpp
11
main.cpp
|
@ -24,21 +24,12 @@ namespace Hanabi {
|
||||||
std::cout << "Probability with optimal play: " << res << std::endl;
|
std::cout << "Probability with optimal play: " << res << std::endl;
|
||||||
std::cout << "Enumerated " << game->enumerated_states() << " states" << std::endl;
|
std::cout << "Enumerated " << game->enumerated_states() << " states" << std::endl;
|
||||||
std::cout << "Visited " << game->position_tablebase().size() << " unique game states. " << std::endl;
|
std::cout << "Visited " << game->position_tablebase().size() << " unique game states. " << std::endl;
|
||||||
for (const auto &[action, probability] : game->get_reasonable_actions()) {
|
|
||||||
std::cout << action;
|
|
||||||
if(probability.has_value()) {
|
|
||||||
std::cout << " " << probability.value();
|
|
||||||
} else {
|
|
||||||
std::cout << " unknown";
|
|
||||||
}
|
|
||||||
std::cout << ", ";
|
|
||||||
}
|
|
||||||
std::cout << std::endl;
|
|
||||||
unsigned long biggest_key = 0;
|
unsigned long biggest_key = 0;
|
||||||
for(const auto& [key, prob] : game->position_tablebase()) {
|
for(const auto& [key, prob] : game->position_tablebase()) {
|
||||||
biggest_key = std::max(biggest_key, key);
|
biggest_key = std::max(biggest_key, key);
|
||||||
}
|
}
|
||||||
std::cout << "Biggest key generated is " << biggest_key << std::endl;
|
std::cout << "Biggest key generated is " << biggest_key << std::endl;
|
||||||
|
std::cout << std::endl;
|
||||||
|
|
||||||
auto game_shared = std::shared_ptr<HanabiStateIF>(game.release());
|
auto game_shared = std::shared_ptr<HanabiStateIF>(game.release());
|
||||||
auto states = game_shared->possible_next_states(0, false);
|
auto states = game_shared->possible_next_states(0, false);
|
||||||
|
|
Loading…
Reference in a new issue