Comment Comment by ferd Shameless plug: a code walkthru modeling the rules of chess, ment as an exercise/teaching functional programming (in Clojure):https://neuroning.com/boardgames-exercise/notebooks/walkthro...The implementation makes it really easy to add new piece types or rules. For example, here's the full logic for rooks (sans castling): (defn expand-pmove-for-rook [pmove] (->> pmove (expand-pmove-dirs [↑ ↓ ← →]) (pmoves-discard #(or (pmove-on-same-player-piece? %) (pmove-changed-direction? %))) (map pmoves-finish-capturing-opponent-piece) (pmoves-finish-and-continue)))) parent ferd 5 months ago
https://neuroning.com/boardgames-exercise/notebooks/walkthro...
The implementation makes it really easy to add new piece types or rules. For example, here's the full logic for rooks (sans castling):