Проверка принадлежности числа диапазону на Prolog

Программирование Помощь с решением задач на Prolog Общие вопросы Проверка принадлежности числа диапазону на Prolog

В этой теме 1 ответ, 2 участника, последнее обновление  Васильев Владимир Сергеевич 2 года/лет, 4 мес. назад.

Просмотр 2 сообщений - с 1 по 2 (из 2 всего)
  • Автор
    Сообщения
  • #2635

    questioner
    Участник

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

    707 Free variable in expression

    #2636

    Реализовать требуемое вам поведение можно следующим образом:

    in_range(Value, range(Value, _)):-!.
    in_range(Value, range(_, Value)):-!.
    in_range(Value, range(From, To)):-
      Value > From, Value < To.

    Первые два правила срабатывают если одна из границ диапазона не задана или не задано исходное число (т.к. в этом случае оно тоже успешно унифицируется любой границей диапазона).

    Однако, с помощью такого правила вы не сможете например получить все числа в диапазоне (мне кажется вы могли иметь это, говоря о случае когда не задано исходное число) — для этого нужно использовать предикат between.

    Вложения:
    Вы должны войти для просмотра вложений.
Просмотр 2 сообщений - с 1 по 2 (из 2 всего)

Для ответа в этой теме необходимо авторизоваться.