FEN: 4k3/1q6/P2q4/4B3/8/8/8/1R2K3 w - - 0 1
Code: Select all
Chessboard:
8 k
7 q
6 P q
5 B
4
3
2
1 R K
a b c d e f g h
Sequence 1:
a6xb7 Wpawn captures BQueen
b1xb7 WRook captures BQueen
Or,
Sequence 2:
b1xb7 WRook captures BQueen
a6xb7 WPawn captures BQueen
Either way, if I next generate the capture of black's second queen on d6, I violate the LVA sorting requirement.
This example fails identically (violates the LVA sorting requirement) if I generate the capture of black's second queen on d6 first before next generating the two captures of black's queen on b7.
Yet, Heinz states that he has solved this problem and sorts *both* MVV and LVA without generating a list of moves in advance. Further, he states that virtually all performant chess engines in the world use the well-known method of solving this problem.
I just can't see any way that the concrete example above could be solved through incremental generation of captures proceeding one piece at a time. I can see that it can be solved if, for example, all queen captures were placed in a list and the list was subsequently sorted. But that would be making a list, which Heinz says is not necessary.
I'm very surprised by this statement.
Rob