#

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.