This is Vietnamese Mathematical Chess—
The board contains 11 ranks and 9 files. Each side has ten pieces, numbered from 0 to 9. The board initial layout is as displayed in the picture below—
Movements: Each piece (with the exception of 0 piece) can move in any direction (vertically, horizontally, or diagonally − forward or backward), the max number of squares a piece can move depends on the number of the piece.
For example, the piece with number 2 can move 1 or 2 empty squares, while the piece with number 9 can move from 1 to 9 empty squares—
Capture: To capture the opponent's piece, a player must have two pieces one next to another. Then use the numbers of the two pieces to make calculations. Allowed calculations are + (addition), - (subtraction), × (multiplication), ÷ (division), and modulus (division reminder).

Any results of the calculations can be used to apply to the capture. If a result contains two numbers, then remove the tens number (for example 8×7=56=>use 6). Use a suitable result to make the capture by taking the piece behind to capture the opponent's piece.

For example, one player have an 8 piece and 5 piece next to each other vertically. Calculation results from these 2 pieces are:
8+5=13 (take 3)
8×5=40 (take 0 - which is useless anyway)
8÷5=1 with 3 as remainder (take both 1 and 3)
The player can then use the 8 piece (the piece behind) to capture an opponent piece which is 1 or 3 squares away from the 5 piece (the piece in front), in the same the direction that 8->5 is.

The image below shows how the 1 piece and 2 piece standing next to each other can capture the opponent's pieces. If an opponent's piece is on one of those X squares, the player can capture it. The calculations that the capture is based on are: 1+2=3, 1×2=2, 1÷2=0 with 1 as remainder—

The 0 piece (the one with zero number) is like the King in Chess. When it is captured, the player loses the game.

Besides capturing the 0 piece, players can agree at a certain point to end a match (if the 0 piece is not captured before that point is reached). The point that one player gains is calculated by summing the numbers of the opponent's pieces that have been captured.

For example, if the players agree to set the match's ending point to 10. Then when a player captures the 5 and 6 piece, he wins the game (5+6=11 which is greater than 10). Or if a player captures the 0 piece then he also wins.

We all know that the aim of Chess is to checkmate the opponent's King, the aim of Go is to surround a larger total area of the board with one's stones than the opponent (count by scores). In Mathematical Chess, I think we must balance Chess and Go, the game−complexity is really high.

I want to evaluate every mathematical chess piece value. I'm studying Machine Learning, how can I continue with my idea? I need your help. This Chess-variant deserves much more research effort.

  • 3
    Note that in the modern ML (viz Alpha) piece values exist at most implicitly. That said "Learning the piece values for three chess variants" by Droste (google it) clearly is your friend. Apr 10 at 18:44

2 Answers 2


I want to evaluate every mathematical chess piece value

Currently there are two chess engine models. In the first, the traditional one going back 50 years, the engine is programmed with the previously known chess piece values for use in positional evaluation. In the second, the AlphaZero model based on neural networks, the engine learns by playing against itself with perhaps a head start gained by putting in a large number of master games.

This suggests two possible approaches you could try.

The first obvious one is to program your own neural net to play Vietnamese Mathematical Chess and derive piece values from that once it reaches a certain level.

The second one relies on you having a very large database of Vietnamese mathematical chess games and using a statistical method called logistic regression. There is an interesting blog post by Rasmus Bååth in which he describes his efforts to derive from scratch the values of the chess pieces in the traditional game using logistic regression which you might find useful.

How successful Rasmus Bååth's approach was is open to some doubt. He got that a queen was worth 4x a pawn, however that may be a reflection of his data rather than his methods. The relative value he obtained for the other pieces does correspond to traditional values. So, evaluating the knight as "3" gives bishop as just over 3, rook as just over 5, queen as just under 9, but pawn as just over 2.


Create a computer program or engine for that variant, then you can try to find the optimal piece values or other engine parameters by using a parameter optimizer like this parameter optimizer. I am the author of this optimizer.

  • How can I connect to you on Twitter? Apr 14 at 1:51
  • I have no twitter.
    – ferdy
    Apr 14 at 2:07
  • Do you have fB? Apr 14 at 2:50
  • 1
    Yes github has discussion feature or you can just create an issue for first contact purposes. I would recommend you to go to this site github.com/ianfab/Fairy-Stockfish, create an issue and introduce your variant. Be sure to indicate the rules. Fairy-Stockfish is capable of creating a game variant if basic rules are already supported. If not some programmers there might get interested and would support your variant and implement it in stockfish so that you will have your engine that can play the game and be able to test it.
    – ferdy
    Apr 14 at 11:00
  • 1
    Let us continue this discussion in chat.
    – ferdy
    Apr 14 at 11:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.