averagedistance.cql

// Download averagedistance.cql
// PGN output when run on sample.pgn

/* Find games with maximum average move length in the main line.
   All distances are scaled by a factor of 1000.
   Only studies with more than 10 ply and with average distance>4 are included
*/

cql(input heijden.pgn quiet)
Scale=1000
function scaledD(x y){
 drank = Scale* (rank x - rank y)
 dfile = Scale* (file x - file y)
 sqrt(drank*drank + dfile*dfile)
}
initial
Sum=0
find all
 Sum+=scaledD(move from . move to .)
find {terminal
      ply>10
      sort "Average move length"
        Sum/ply>4*Scale}