aboutsummaryrefslogtreecommitdiff
path: root/src/misc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/misc.cpp')
-rw-r--r--src/misc.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/misc.cpp b/src/misc.cpp
index e9073d4..a69054b 100644
--- a/src/misc.cpp
+++ b/src/misc.cpp
@@ -1,6 +1,8 @@
#include "misc.hpp"
+#include "board/board.hpp"
#include "moves.hpp"
#include <cstdint>
+#include <iostream>
#include <string_view>
#include <vector>
@@ -31,3 +33,44 @@ uint64_t MoveGenTest(uint32_t depth, Game *g) {
}
return positionCount;
}
+
+uint64_t MoveGenTestDivide(uint32_t depth, Game *g) {
+ if (depth == 0) {
+ return 1;
+ }
+
+ uint64_t total = 0;
+
+ std::vector<uint16_t> moves = GetLegalMoves(g, ALL);
+
+ for (uint16_t move : moves) {
+ uint8_t from = getFromValueFromMove(move);
+ uint8_t to = getToValueFromMove(move);
+ Position fromPos = IndexToPosition(from);
+ Position toPos = IndexToPosition(to);
+
+ Undo undo = MakeMove(move, g);
+
+ uint64_t count = MoveGenTest(depth - 1, g);
+
+ UndoMove(undo, g);
+
+ char fromFile = static_cast<char>('a' + fromPos.file);
+ char toFile = static_cast<char>('a' + toPos.file);
+ std::cout << fromFile << (fromPos.rank + 1) << toFile << (toPos.rank + 1);
+ PieceType promo = getPromotionTypeFromMove(move);
+ if (promo == QUEEN)
+ std::cout << 'q';
+ else if (promo == ROOK)
+ std::cout << 'r';
+ else if (promo == KNIGHT)
+ std::cout << 'n';
+ else if (promo == BISHOP)
+ std::cout << 'b';
+ std::cout << ": " << count << "\n";
+ total += count;
+ }
+
+ std::cout << "\nTotal: " << total << "\n";
+ return total;
+}