# two-piece-cycle.cql

// Download two-piece-cycle.cql// PGN output when run on sample.pgn

/* Find games in which there is a "two-piece cycle" in which two pieces, T1 (a black piece) and T2 (a white piece), each traverse the same set of squares. T1 starts, then T2 moves to a square, then T1 moves to a new square, and so on, until each piece's final move ends on the same square as that piece's initial square. Thus, the path of each piece forms a cycle. The moves need not be consecutive (unlike in the CQL 6.1 version). Games are sorted by length of cycle. */ cql (input hhdbvi.pgn) ◭T1∊▲ ◭T2∊△ { C1 = T1 //cycle traversed by T1 C2 = T2 //cycle traversed by T2 Start=∙ sort "cycle length" ⊢◎T1∪T2 piecepath (T1――~C1 C1=C1∪T1 T2――~C2 C2=C2∪T2)+ T1――Start:T1 T2――Start:T2 C1==C2 }