Dynamic program to solve Hanabi endgame optimally (assuming people know their cards but not the draw pile)
Find a file
2023-08-12 11:09:06 +02:00
.gitignore add submodule and proper .gitignore 2023-08-08 11:12:59 +02:00
cli_interface.cpp support reverting multiple turns at once 2023-08-12 10:50:16 +02:00
cli_interface.h add history and command completion to readline 2023-08-12 09:36:06 +02:00
CMakeLists.txt add cli interface 2023-08-12 00:04:02 +02:00
download.h improve cli interface: easier handling, more input validation 2023-08-12 08:50:28 +02:00
game_state.h expand cli interface 2023-08-12 10:19:04 +02:00
game_state.hpp improve printing 2023-08-12 11:09:06 +02:00
LICENSE Add LICENSE 2023-08-09 20:53:45 +00:00
main.cpp improve printing 2023-08-12 11:09:06 +02:00
myassert.h add missing assert file 2023-08-06 22:08:34 +02:00
README.md fix links 2023-08-09 22:57:16 +02:00

Endgame-Analyzer

This is a dynamic program written in C++ to solve Hanabi endgames. Some optimizations are performed, but it is not particularly well-written at the moment and could also use some code cleanup.

As of now, you can run the executable with an id from a hanab.live game and a turn number (shifted by 1, since we start counting at 0 and hanab.live at 1) and the winning percentage for the corresponding game state with optimum play will be calculated.

Here, optimum play refers to the assumption that everbody knows their cards, but not the draw pile.

For example, if the output of the program is 1, then this means that even if an evil adversary is allowed to pick the next card in the deck each time a card is drawn, there is still a strategy that guarantees a win.

Compilation

The build uses cmake. Additionally, you need the boost and cpr libraries to build, refer to these pages to install them.