between
Thebetween
filter consists of the single word between
followed by two
set filters enclosed in parentheses:
between(R q) between(A attacks _ a attacks q) between(move from A move to .)
Suppose x and y are two squares on and empty chessboard. We say a square z is between the squares x and y if the center of z lies on a line segment between the centers of x and y, and if z is neither x nor y. We only consider line segments that are on "basic directions": a queen on x must attack y.
For example, there are no squares between a1
and h7
. The square b2
is the only square between a1
and c3
.
Suppose s and t are set filters whose corresponding sets of squares in the current position are S and T respectiviely.
Then between(s t)
is the set of squares z such that z is between some square x in S and y in T.
Examples
The diagram below(found from CQL file: 8piecesinline.cql)
can be found by running 8piecesinline.cql on the sample database.
The CQL file 8piecesinline.cql matches a game with a position with a line, orthogonal or diagonal, that has 8 pieces, including the position above.
The between
filter is also used in bristol-universal.cql, clearance-delayed.cql, turton.cql, wurzburg-plachutta.cql, and idealmate.cql.