phhnguyen wrote:I have been trying to use (1) and (2) (score subverted attack of Cannon). Still trouble to explain both game 61 and A3. They both have very similar pattern:
Cannon of 1st side - Rook of 2nd side - piece A of 1st side - piece B of 2nd side - Cannon of 1st side
In 61, piece B is a Horse, in A3, piece B is a Rook. We have to score so 61 as a win for Rook side, but A3 as a draw.
Of course the simplest way is to announce the pattern C - R - a piece - R - C as an exception case of draw (so we don't need to use any (1), (2) or (3). But I hope to find a better explanation which introduces as less exceptions as possible.
Can we all work together to solve that problem?
You lost me completely here. What do you mean when you say "Rook of 2nd side"? There are no Rook moves in the diagram 61 I have! Just Elephants and Horses. And no Cannon moves in A3.
In my algorithm, when judging the black moves in 61, I would see:
a) before the move: Rc2 attacks Cb2 (which is protected by Ch2)
b) after the move: Rc2 attacks Cb2 (which is now unprotected)
This means the subtraction operator will not remove this capture from the chase list, because the protected state is made worse by the move. (Had it been equal or better, it should have been removed, as attacker and victim are both the same.) But in method (1) this would qualify the move as a chase by subversion, because only the protected state was different, and I mark Rc2xb2 as a lesser violation. The other case would have been
a) before move: A does not attack B (protection of B irrelevant)
b) after move: A does attack B (which is unprotected)
Here the attack status differs, so it is a chase by direct attack (major violation), and I don't even have to consider the protection before the move. (All other combinations of attack and protection before/after would be thrown out immediately, as they can never be chases.) In both cases, a capture that passes (i.e. is not removed from the list) would still be checked after the opponent's reply, to verify that either
A) the attack no longer exists
B) the attack still exists, but the victim is now protected
If (A) or (B) is the case, I keep the move in the list, but whether it was (A) or (B) will not affect the qualification as protecton subversion or direct attack. (Of course it will affect the chase as a whole, because the position after the reply will be the starting position for the next move of this side. So if we have case (B), the victim is now protected even before the move, so to chase it would require subversion of that protection, possibly with or without a new attack on it. But this will all be taken into account when judging the next move.)
With rule (1) the intersection operator would have to keep track of the violence level: if you decide to keep a capture because the victim was the same as that of another capture already in the list, you would have to give it the lowest violence level of the two. Which means that you really would have to go through the entire existing list to determine the highest violence level for any attack on that piece in the old list.
With rule (2) additional tests would be required when a subversion chase is found. In particular it would test if attacker was Rook, protector was Cannon, and both were attacking the victim from the same direction. If this was the case, I remove that capture immediately from the list, just as I would when it had not been a chase because the victim was protected after the move, or the attacker was K or P. There would be no reason in this case to keep track of a level of violence. (I guess that this might make (2) simpler than (1).)