def runs.over
gralha-coverage@0.1.0.1 · cover.bend:111
import gralha-coverage@0.1.0.1/cover.bend as Cover
import Base
import gralha-text-scan@0.1.0.1/scan.bend as U
111
112
113
114
115def runs.over(rs: List<&2, Run>, +x0: U32, +x1: U32, +acc: F32) -> F32:
116 match rs:
117 case Nil{}: U.choose(F32, F32.is_gt(acc, 1.5), 0.0, acc)
118 case Con{Run{a, b, v}, rest}:
119 +aa = a
120 +bb = b
121 +vv = v
122 +overlaps = U32.is_lt(aa, x1) && U32.is_lt(x0, bb)
123 +covers = U32.is_le(aa, x0) && U32.is_ge(bb, x1)
124 runs.over(rest, x0, x1, U.choose(F32, Bool.not(overlaps), acc, U.choose(F32, covers && F32.is_gt(acc, 1.5), vv, F32.neg(1.0))))