TypeScript Genomic Range Query
function genomicRangeQuery(s: string, p: number[], q: number[]): number[] {
  const r: number[] = [];

  for (let k = 0; k < p.length; k++) {
    const subStr = s.slice(p[k], q[k] + 1);
    if (subStr.includes("A")) {
      r.push(1);
    } else if (subStr.includes("C")) {
      r.push(2);
    } else if (subStr.includes("G")) {
      r.push(3);
    } else {
      r.push(4);
    }
  }

  return r;
}

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