Jawaban:
Bahasa Catur Catur melakukan ini dengan sangat baik. File .cql pendek berikut berfungsi seperti pesona untuk menemukan semua game di input.pgn di mana satu sisi melakukan pertukaran (sambil memungkinkan perbedaan dalam jumlah pion untuk setiap sisi) untuk 4 gerakan lurus (dipilih untuk memerintah keluar, katakanlah, situasi di mana urutan perdagangan yang sama terjadi dimulai dengan benteng mengambil sepotong kecil, atau pengorbanan semu sementara lainnya).
(match
:pgn input.pgn
:output output.pgn
(position
:sequence(
(position :powerdifference [Rr] -5 -5 :powerdifference [Qq] 0 0 :powerdifference [BbNn] 3 3)
(position :powerdifference [Rr] -5 -5 :powerdifference [Qq] 0 0 :powerdifference [BbNn] 3 3)
(position :powerdifference [Rr] -5 -5 :powerdifference [Qq] 0 0 :powerdifference [BbNn] 3 3)
(position :powerdifference [Rr] -5 -5 :powerdifference [Qq] 0 0 :powerdifference [BbNn] 3 3)
)
:flipcolor
)
)
Nilai titik standar untuk potongan digunakan, sehingga :powerdifference [Rr] -5 -5
kondisinya berarti bahwa Black memiliki satu benteng lebih dari Putih, sementara :powerdifference [BbNn] 3 3
jaminan bahwa Putih memiliki tepat satu bagian lebih kecil daripada Hitam. Pada :flipcolor
akhirnya melakukan pencarian yang sama dengan peran terbalik. Secara default, CQL memasukkan komentar "MATCH" di permainan output.pgn yang dihasilkan pada posisi yang menjamin inklusi mereka, sehingga Anda dapat dengan cepat menemukan kantung pertukaran.