├── .clang-format ├── .gitignore ├── CMakeLists.txt ├── Dockerfile ├── LICENSE ├── README.md ├── data ├── config │ ├── honors_patterns.json │ ├── honors_table.bin │ ├── request_schema.json │ ├── suits_patterns.json │ ├── suits_table.bin │ └── uradora.bin └── testcase │ ├── test_score_calculator_all_green.txt │ ├── test_score_calculator_all_honors.txt │ ├── test_score_calculator_all_terminals.txt │ ├── test_score_calculator_big_four_winds.txt │ ├── test_score_calculator_big_three_dragons.txt │ ├── test_score_calculator_four_concealed_triplets.txt │ ├── test_score_calculator_little_four_winds.txt │ ├── test_score_calculator_nine_gates.txt │ ├── test_score_calculator_single_wait_four_concealed_triplets.txt │ ├── test_score_calculator_thirteen_wait_thirteen_orphans.txt │ ├── test_score_calculator_true_nine_gates.txt │ ├── test_score_normal_yaku.json │ ├── test_shanten_calculator.txt │ └── test_unnecessary_tile_calculator.txt ├── docs └── mahjong-nanikiru-simulator.png └── src ├── mahjong ├── core │ ├── expected_score_calculator.cpp │ ├── expected_score_calculator.hpp │ ├── hand_separator.cpp │ ├── hand_separator.hpp │ ├── necessary_tile_calculator.cpp │ ├── necessary_tile_calculator.hpp │ ├── nyanten_table.hpp │ ├── score_calculator.cpp │ ├── score_calculator.hpp │ ├── score_table.hpp │ ├── shanten_calculator.cpp │ ├── shanten_calculator.hpp │ ├── string.cpp │ ├── string.hpp │ ├── table.cpp │ ├── table.hpp │ ├── unnecessary_tile_calculator.cpp │ ├── unnecessary_tile_calculator.hpp │ └── utils.hpp ├── mahjong.hpp └── types │ ├── block.hpp │ ├── const.hpp │ ├── meld.hpp │ ├── player.hpp │ ├── result.hpp │ ├── round.hpp │ └── types.hpp ├── misc └── shanten_table │ ├── CMakeLists.txt │ ├── create_distance_table.cpp │ ├── create_uradora_table.cpp │ └── list_hand_and_melds_patterns.cpp ├── samples ├── CMakeLists.txt ├── sample_create_hand.cpp ├── sample_expected_score_calculation.cpp ├── sample_necessary_tile_calculation.cpp ├── sample_score_calculation.cpp ├── sample_shanten_number_calculation.cpp └── sample_unnecessary_tile_calculation.cpp ├── server ├── CMakeLists.txt ├── ThreadPool.hpp ├── client_sample │ ├── client.py │ ├── const.py │ ├── mahjong.py │ └── requirements.txt ├── json_parser.cpp ├── json_parser.hpp ├── server.cpp └── server.hpp └── test ├── CMakeLists.txt ├── test_hand.cpp ├── test_json_parser.cpp ├── test_necessary_tile_calculator.cpp ├── test_player.cpp ├── test_score_yaku.cpp ├── test_score_yakuman.cpp ├── test_shanten_calculator.cpp ├── test_string.cpp └── test_unnecessary_tile_calculator.cpp /.clang-format: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/.clang-format -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/.gitignore -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/CMakeLists.txt -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/Dockerfile -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/README.md -------------------------------------------------------------------------------- /data/config/honors_patterns.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/data/config/honors_patterns.json -------------------------------------------------------------------------------- /data/config/honors_table.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/data/config/honors_table.bin -------------------------------------------------------------------------------- /data/config/request_schema.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/data/config/request_schema.json -------------------------------------------------------------------------------- /data/config/suits_patterns.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/data/config/suits_patterns.json -------------------------------------------------------------------------------- /data/config/suits_table.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/data/config/suits_table.bin -------------------------------------------------------------------------------- /data/config/uradora.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/data/config/uradora.bin -------------------------------------------------------------------------------- /data/testcase/test_score_calculator_all_green.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/data/testcase/test_score_calculator_all_green.txt -------------------------------------------------------------------------------- /data/testcase/test_score_calculator_all_honors.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/data/testcase/test_score_calculator_all_honors.txt -------------------------------------------------------------------------------- /data/testcase/test_score_calculator_all_terminals.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/data/testcase/test_score_calculator_all_terminals.txt -------------------------------------------------------------------------------- /data/testcase/test_score_calculator_big_four_winds.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/data/testcase/test_score_calculator_big_four_winds.txt -------------------------------------------------------------------------------- /data/testcase/test_score_calculator_big_three_dragons.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/data/testcase/test_score_calculator_big_three_dragons.txt -------------------------------------------------------------------------------- /data/testcase/test_score_calculator_four_concealed_triplets.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/data/testcase/test_score_calculator_four_concealed_triplets.txt -------------------------------------------------------------------------------- /data/testcase/test_score_calculator_little_four_winds.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/data/testcase/test_score_calculator_little_four_winds.txt -------------------------------------------------------------------------------- /data/testcase/test_score_calculator_nine_gates.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/data/testcase/test_score_calculator_nine_gates.txt -------------------------------------------------------------------------------- /data/testcase/test_score_calculator_single_wait_four_concealed_triplets.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/data/testcase/test_score_calculator_single_wait_four_concealed_triplets.txt -------------------------------------------------------------------------------- /data/testcase/test_score_calculator_thirteen_wait_thirteen_orphans.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/data/testcase/test_score_calculator_thirteen_wait_thirteen_orphans.txt -------------------------------------------------------------------------------- /data/testcase/test_score_calculator_true_nine_gates.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/data/testcase/test_score_calculator_true_nine_gates.txt -------------------------------------------------------------------------------- /data/testcase/test_score_normal_yaku.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/data/testcase/test_score_normal_yaku.json -------------------------------------------------------------------------------- /data/testcase/test_shanten_calculator.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/data/testcase/test_shanten_calculator.txt -------------------------------------------------------------------------------- /data/testcase/test_unnecessary_tile_calculator.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/data/testcase/test_unnecessary_tile_calculator.txt -------------------------------------------------------------------------------- /docs/mahjong-nanikiru-simulator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/docs/mahjong-nanikiru-simulator.png -------------------------------------------------------------------------------- /src/mahjong/core/expected_score_calculator.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/core/expected_score_calculator.cpp -------------------------------------------------------------------------------- /src/mahjong/core/expected_score_calculator.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/core/expected_score_calculator.hpp -------------------------------------------------------------------------------- /src/mahjong/core/hand_separator.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/core/hand_separator.cpp -------------------------------------------------------------------------------- /src/mahjong/core/hand_separator.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/core/hand_separator.hpp -------------------------------------------------------------------------------- /src/mahjong/core/necessary_tile_calculator.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/core/necessary_tile_calculator.cpp -------------------------------------------------------------------------------- /src/mahjong/core/necessary_tile_calculator.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/core/necessary_tile_calculator.hpp -------------------------------------------------------------------------------- /src/mahjong/core/nyanten_table.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/core/nyanten_table.hpp -------------------------------------------------------------------------------- /src/mahjong/core/score_calculator.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/core/score_calculator.cpp -------------------------------------------------------------------------------- /src/mahjong/core/score_calculator.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/core/score_calculator.hpp -------------------------------------------------------------------------------- /src/mahjong/core/score_table.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/core/score_table.hpp -------------------------------------------------------------------------------- /src/mahjong/core/shanten_calculator.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/core/shanten_calculator.cpp -------------------------------------------------------------------------------- /src/mahjong/core/shanten_calculator.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/core/shanten_calculator.hpp -------------------------------------------------------------------------------- /src/mahjong/core/string.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/core/string.cpp -------------------------------------------------------------------------------- /src/mahjong/core/string.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/core/string.hpp -------------------------------------------------------------------------------- /src/mahjong/core/table.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/core/table.cpp -------------------------------------------------------------------------------- /src/mahjong/core/table.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/core/table.hpp -------------------------------------------------------------------------------- /src/mahjong/core/unnecessary_tile_calculator.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/core/unnecessary_tile_calculator.cpp -------------------------------------------------------------------------------- /src/mahjong/core/unnecessary_tile_calculator.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/core/unnecessary_tile_calculator.hpp -------------------------------------------------------------------------------- /src/mahjong/core/utils.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/core/utils.hpp -------------------------------------------------------------------------------- /src/mahjong/mahjong.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/mahjong.hpp -------------------------------------------------------------------------------- /src/mahjong/types/block.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/types/block.hpp -------------------------------------------------------------------------------- /src/mahjong/types/const.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/types/const.hpp -------------------------------------------------------------------------------- /src/mahjong/types/meld.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/types/meld.hpp -------------------------------------------------------------------------------- /src/mahjong/types/player.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/types/player.hpp -------------------------------------------------------------------------------- /src/mahjong/types/result.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/types/result.hpp -------------------------------------------------------------------------------- /src/mahjong/types/round.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/types/round.hpp -------------------------------------------------------------------------------- /src/mahjong/types/types.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/mahjong/types/types.hpp -------------------------------------------------------------------------------- /src/misc/shanten_table/CMakeLists.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/misc/shanten_table/CMakeLists.txt -------------------------------------------------------------------------------- /src/misc/shanten_table/create_distance_table.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/misc/shanten_table/create_distance_table.cpp -------------------------------------------------------------------------------- /src/misc/shanten_table/create_uradora_table.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/misc/shanten_table/create_uradora_table.cpp -------------------------------------------------------------------------------- /src/misc/shanten_table/list_hand_and_melds_patterns.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/misc/shanten_table/list_hand_and_melds_patterns.cpp -------------------------------------------------------------------------------- /src/samples/CMakeLists.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/samples/CMakeLists.txt -------------------------------------------------------------------------------- /src/samples/sample_create_hand.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/samples/sample_create_hand.cpp -------------------------------------------------------------------------------- /src/samples/sample_expected_score_calculation.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/samples/sample_expected_score_calculation.cpp -------------------------------------------------------------------------------- /src/samples/sample_necessary_tile_calculation.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/samples/sample_necessary_tile_calculation.cpp -------------------------------------------------------------------------------- /src/samples/sample_score_calculation.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/samples/sample_score_calculation.cpp -------------------------------------------------------------------------------- /src/samples/sample_shanten_number_calculation.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/samples/sample_shanten_number_calculation.cpp -------------------------------------------------------------------------------- /src/samples/sample_unnecessary_tile_calculation.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/samples/sample_unnecessary_tile_calculation.cpp -------------------------------------------------------------------------------- /src/server/CMakeLists.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/server/CMakeLists.txt -------------------------------------------------------------------------------- /src/server/ThreadPool.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/server/ThreadPool.hpp -------------------------------------------------------------------------------- /src/server/client_sample/client.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/server/client_sample/client.py -------------------------------------------------------------------------------- /src/server/client_sample/const.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/server/client_sample/const.py -------------------------------------------------------------------------------- /src/server/client_sample/mahjong.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/server/client_sample/mahjong.py -------------------------------------------------------------------------------- /src/server/client_sample/requirements.txt: -------------------------------------------------------------------------------- 1 | requests 2 | -------------------------------------------------------------------------------- /src/server/json_parser.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/server/json_parser.cpp -------------------------------------------------------------------------------- /src/server/json_parser.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/server/json_parser.hpp -------------------------------------------------------------------------------- /src/server/server.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/server/server.cpp -------------------------------------------------------------------------------- /src/server/server.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/server/server.hpp -------------------------------------------------------------------------------- /src/test/CMakeLists.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/test/CMakeLists.txt -------------------------------------------------------------------------------- /src/test/test_hand.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/test/test_hand.cpp -------------------------------------------------------------------------------- /src/test/test_json_parser.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/test/test_json_parser.cpp -------------------------------------------------------------------------------- /src/test/test_necessary_tile_calculator.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/test/test_necessary_tile_calculator.cpp -------------------------------------------------------------------------------- /src/test/test_player.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/test/test_player.cpp -------------------------------------------------------------------------------- /src/test/test_score_yaku.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/test/test_score_yaku.cpp -------------------------------------------------------------------------------- /src/test/test_score_yakuman.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/test/test_score_yakuman.cpp -------------------------------------------------------------------------------- /src/test/test_shanten_calculator.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/test/test_shanten_calculator.cpp -------------------------------------------------------------------------------- /src/test/test_string.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/test/test_string.cpp -------------------------------------------------------------------------------- /src/test/test_unnecessary_tile_calculator.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nekobean/mahjong-cpp/HEAD/src/test/test_unnecessary_tile_calculator.cpp --------------------------------------------------------------------------------