Ответ в теме: Функция between на Prolog. Генерация чисел в диапазоне

      Комментарии к записи Ответ в теме: Функция between на Prolog. Генерация чисел в диапазоне отключены
#2122

Во многих реализациях, например в SWI Prolog или GNU Prolog такая функция является встроенной. Возможно она отсутствует в Arity Prolog или, например, Strawberry Prolog. Её точно нет в Turbo и Visual Prolog, поэтому иногда ее действительно надо реализовывать самостоятельно.

between(Low, Hight, _Value):-
  Low > Hight, !, fail.
between(Low, Hight, Low).
between(Low, Hight, Value):-
  NextLow is Low + 1, 
  between(NextLow, Hight, Value).

Функция принимает на вход верхнюю и нижнюю границы. Если между ними нет ни одного числа (данные были изначально не верны или все числа уже оказались перебраны) — функция завершает работу. В противном случае, необходимо попробовать вернуть нижнюю границу в качестве результата, а если он не подойдет, то управление будет передано на третье правило, которое увеличит значение нижней границы и осуществи рекурсивный вызов для генерации остальных вариантов.

Вложения: