Чит.
Сопоставьте желаемый диапазон с другим, более простым в работе с Groovy. Вы хотите что-то вроде:
y in [x, x+0.5, x+1, x+1.5, ..., x+n] // tricky if you want a range object
, что верно, если и только если:
2*y in [2x,2x+1,2x+2,2x+3,...,2x+2n] // over whole integers only
, что совпадает с объектом диапазона:
(2*x)..(2*x+2*n).contains(2*y) //simple!
или
switch (2*y) {
case (2*x)..(2*x+2*n): doSomething(); break;
...}