// Some magics need to be split in order to reduce memory consumption.
// Otherwise on a 12x10 board they can be >100 MB.
#ifdef LARGEBOARDS
- Bitboard RookTableH[0x11800]; // To store horizontalrook attacks
+ Bitboard RookTableH[0x11800]; // To store horizontal rook attacks
Bitboard RookTableV[0x4800]; // To store vertical rook attacks
Bitboard BishopTable[0x33C00]; // To store bishop attacks
Bitboard CannonTableH[0x11800]; // To store horizontal cannon attacks
s += "| " + std::to_string(1 + r) + "\n+---+---+---+---+---+---+---+---+---+---+---+---+\n";
}
- s += " a b c d e f g h i j k\n";
+ s += " a b c d e f g h i j k l\n";
return s;
}
target = value == "reversi" ? REVERSI
: value == "ataxx" ? ATAXX
: value == "quadwrangle" ? QUADWRANGLE
+ : value == "snort" ? SNORT
: NO_ENCLOSING;
- return value == "reversi" || value == "ataxx" || value == "quadwrangle" || value == "none";
+ return value == "reversi" || value == "ataxx" || value == "quadwrangle" || value =="snort" || value == "none";
}
template <> bool set(const std::string& value, Bitboard& target) {
b ^= s;
}
}
+ else if (enclosing_drop() == SNORT)
+ {
+ Bitboard theirs = pieces(~c);
+ b &= ~(shift<NORTH >(theirs) | shift<SOUTH >(theirs)
+ | shift<EAST >(theirs) | shift<WEST >(theirs));
+ }
else
{
assert(enclosing_drop() == ATAXX);
};
enum EnclosingRule {
- NO_ENCLOSING, REVERSI, ATAXX, QUADWRANGLE
+ NO_ENCLOSING, REVERSI, ATAXX, QUADWRANGLE, SNORT
};
enum OptBool {
# [MaterialCounting]: material counting rules for adjudication [janggi, unweighted, whitedrawodds, blackdrawodds, none]
# [CountingRule]: makruk, cambodian, or ASEAN counting rules [makruk, cambodian, asean, none]
# [ChasingRule]: xiangqi chasing rules [axf, none]
-# [EnclosingRule]: reversi or ataxx enclosing rules [reversi, ataxx, quadwrangle, none]
+# [EnclosingRule]: reversi or ataxx enclosing rules [reversi, ataxx, quadwrangle, snort, none]
### Additional options relevant for usage in Winboard/XBoard
# A few options only have the purpose of improving compatibility with Winboard/Xboard.
pieceDrops = false
passOnStalemate = false
+#https://www.ludii.games/details.php?keyword=Snort
+#also known as Cats & Dogs
+[snort:ataxx]
+immobile = p
+startFen = 8/8/8/8/8/8/8/8
+enclosingDrop = snort
+flipEnclosedPieces = none
+maxRank = 8
+maxFile = 8
+passOnStalemate = false
+stalematePieceCount = false
+
#https://www.chess.com/variants/blackletter-chess
[blackletter:chess]
pieceToCharTable = PNBRQ.......E...M...HKpnbrq.......e...m...hk