Lisp Genomic Range Query
(defun genomic-range-query (s p q)
  (loop for pi in p
        for qi in q
        collect (let ((sub (subseq s pi (1+ qi))))
                  (cond
                    ((find #\A sub) 1)
                    ((find #\C sub) 2)
                    ((find #\G sub) 3)
                    (t 4)))))

This builds prefix counts for each DNA letter so every query can return the minimum impact factor quickly.