Prolog 序言:在列表中搜索范围的查询

Prolog 序言:在列表中搜索范围的查询,prolog,Prolog,我需要在列表中的给定范围内编写搜索的查询 我试过这个,但不起作用 find(R1, R2, Z, L):- D=1, element_at(X, Z, D), X >= R1, X <= R2, add(X, L, [X|L]), D+1. 它给我错误的印象 但我需要返回包含此范围内整数的列表 提前谢谢。如果我理解了这个问题,我想你可以这样做: 答案编辑 你能解释一下这个的语义是什么吗?元素_at/3的作用是什么?add/3做什么呢?

我需要在列表中的给定范围内编写搜索的查询

我试过这个,但不起作用

find(R1, R2, Z, L):-
    D=1,
    element_at(X, Z, D),
    X >= R1,
    X <= R2,
    add(X, L, [X|L]),
    D+1.
它给我错误的印象

但我需要返回包含此范围内整数的列表


提前谢谢。

如果我理解了这个问题,我想你可以这样做: 答案编辑


你能解释一下这个的语义是什么吗?元素_at/3的作用是什么?add/3做什么呢?索引D和Z处的元素是list,X list返回了它内置的predicateadd/3 add to list也内置了它。这些注释一点帮助都没有。你仍然没有详细解释谓词应该做什么。您正在使用什么实现?你们能告诉我你们得到了什么和你们期望得到什么吗?我问你们如何搜索列表中的整数范围并返回列表中的所有整数谢谢你们的回复,若我像这样输入查询怎么做?查找10,30,[[60,john],[24,alex]],L。然后返回alex如何执行此操作,请帮助。另外,如何查找检查数以构建输出列表但最后一件事是我需要查找检查数以构建输出列表
% when the list is empty, there is nothing between R1 and R2
find(_R1, _R2, [], []).

% I test the first element of the list
% then I process the rest of the list
% L1 is unified after the call of find
find(R1, R2, [[Age, Name] | T], L):-
    (   (R1 =< Age, Age =< R2)
    ->  L = [Name | L1]
    ;   L = L1),
    find(R1, R2, T, L1).