bristol-universal.cql

// Download bristol-universal.cql
// PGN output when run on sample.pgn

/************
Find all Bristols orthogonal or diagonal.
Here a front line piece (Front) moves to a destination.

Later, along the same line, a back line piece (Back) follows the
path of Front, crossing the same squares it does, and landing
just behind it.

The results are sorted by the length of the move
by Back (which must traverse at least 3 squares to be
included).
*************/

cql(input heijden.pgn quiet)
 Start=currentposition
 piece Front in [QRB]
  piece Back in [QRB]{
   comment ("Bristol with Front: " Front " and Back: " Back)
   line
     -->  move from Front comment ("Front moves to " Front)
     -->  not check
     -->  not move from Front*
     -->  {xray (Back
                  between (Start:Front
                           Front)
		  Front)
           move from Back to
                      anydirection 1 Front
                 comment ("Thematic Bristol move from " parent:Back)
           sort "length of Bristol move"
	         between (Back Front) >= 3
            } 
   }