#
The#
filter has one argument, a set filter . The value of the #
-filter is the number of squares in its argument. The number of squares
of a set is also called the cardinality of that set.
The #
filter always matches a position. If its argument is an empty set, its value is 0
.
Suppose for example that the current position is the start position of a chess game. Then
#K ≡ 1 #[Kk] ≡ 2 #P attackedby K ≡ 3
To find a position where there are multiple white queens, you could use:
#Q>1
In this case, however, you could just use
Q>1
because a set filter that is compared to a number is automatically converted to its cardinality (that is, the set filter
is prefaced by #
).
Examples
The#
filter is used in chameleon.cql, parallelpaths.cql, and queenpawnpinecho.cql.
In chameleon.cql, the line
#[Aa]==source:#[Aa]checks that the number of pieces in the current positions is the same as the number of pieces in the position named by the variable
source
, using the : filter.