Hacker News new | ask | show | jobs
by cyborgx7 759 days ago
I admit that while I do regularly play chess, I'm not super well versed in either FEN nor Chess960. That said, I've been trying to figure out why you would need a different notation for Chess960 for half an hour now, and I just can't figure it out. All explanations I'm seeing just make some vague mention about ambiguity in the regular notation for Chess960, but I, personally, can't think of a situation in which the regular notation is insufficient.

The KQkq still unambiguously mark which player can castle to which side, and once either a rook or King move for the first time, you just remove the corresponding letter(s). What am I missing?

1 comments

One of the rooks might move over to the other side during the course of the game, and then it's no longer unambiguous which one is the castling rook.

E.g., if you have your king on e1, a rook on f1 and another one on g1… can you castle if the f1 rook moves? Can you castle if the g1 rook moves? Just “kingside” won't tell you the difference.

Ah, that's the possibility I wasn't thinking of. Thank you.
the king always has to be in between rooks in chess960
As a starting position, sure.

But if you have a later board state, with two rooks on one side: how do you know which one is still eligible to castle?

I mean technically it still isn’t ambiguous because you could just refer to the starting position to see which rook is allowed to move.

Which of course is annoying to implement, but you do already have to keep state on the history of the game to determine if moves are legal, e.g. you can’t castle twice.

The entire point of a FEN is that it describes the entire board state without having to know anything about the history.

> Which of course is annoying to implement, but you do already have to keep state on the history of the game to determine if moves are legal, e.g. you can’t castle twice.

No, that's what the castling rights field in the FEN is for. Once you castle, you zero out both the k and q bits.

You don't have the starting position