Пролог: список номеров - PullRequest
       1

Пролог: список номеров

2 голосов
/ 15 сентября 2011

Как создать список чисел от 1 до N, где N> = 0?

Предикат: числа (N, L).

?-­ numbers(5,X).

X = [1, 2, 3, 4, 5].

?­- numbers(0,X).

X = [].

Ответы [ 2 ]

12 голосов
/ 16 сентября 2011

Используйте встроенный numlist/3:

?- numlist(1, 5, L).
L = [1, 2, 3, 4, 5].

?- numlist(1, 0, L).
false.

В SWI-Prolog вы можете использовать listing(numlist), чтобы увидеть, как он был реализован.никогда не будет генерировать пустой список.Если вы хотите этого, то вам нужно написать простую оболочку, которая отображает сбой в пустой список.

3 голосов
/ 16 сентября 2011

Вы можете использовать between для генерации целых чисел между конечными точками, а затем findall, чтобы собрать их вместе. Попробуйте этот предикат -

numbers(Count, List) :-
    findall(N, between(1,Count,N), List).

Если вы дадите Count что-либо <= 0, между ошибками и этим предикатом будет сгенерирован пустой список. </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...