Chess Query Language robi to bardzo dobrze. Poniższy krótki plik .cql działa jak urok, aby znaleźć wszystkie gry w input.pgn, w których jedna strona jest wymieniona (z uwzględnieniem różnicy w liczbie pionków dla każdej strony) na 4 ruchy proste (wybrane tak, aby rządzić out, powiedzmy, sytuacje, w których taka sama sekwencja transakcji zaczyna się od zabrania przez wieżę małej figury lub innych takich tymczasowych pseudo-ofiar).
(match: pgn input.pgn: wyjście wyjściowe.pgn (pozycja: sekwencja ((pozycja: różnica mocy [Rr] -5 -5: różnica mocy [Qq] 0 0: różnica mocy [BbNn] 3 3) (pozycja: różnica mocy [Rr] -5 -5: różnica mocy [Qq] ] 0 0: powerdifference [BbNn] 3 3) (pozycja: powerdifference [Rr] -5 -5: powerdifference [Qq] 0 0: powerdifference [BbNn] 3 3) (pozycja: powerdifference [Rr] -5 -5: powerdifference [Qq] 0 0: powerdifference [BbNn] 3 3)): flipcolor))
Używane są standardowe wartości punktowe dla sztuk, więc : powerdifference [Rr] -5 - 5
co Oznacza to, że czarne mają o jedną wieżę więcej niż białe, podczas gdy : powerdifference [BbNn] 3 3
gwarantuje, że białe mają dokładnie jedną mniejszą figurę więcej niż czarne. : flipcolor
na końcu przeprowadza to samo wyszukiwanie z zamienionymi rolami. Domyślnie CQL wstawia komentarz "MATCH" w grach wynikowego output.pgn w pozycjach, które gwarantują ich włączenie, więc możesz szybko zlokalizować sacs wymiany.