我正在尝试列出值n,n+1,...2*n-1
的列表
例如,如果我有n=4 ==> [4,5,6,7]
我已设法编写此代码,但显示前n个元素的列表。你能帮我修改一下吗?
create(N,L):-
create_list(N,[],L).
create_list(0,L,L).
create_list(N,R,L):-
N>0,
N1=N-1,
create_list(N1,[N|R],L).
答案 0 :(得分:1)
以下是create/2
基于list_from_to/3
编写逻辑纯版本create(From,Zs):-
To #= 2*From-1,
list_from_to(Zs,From,To).
的方法,my answer定义为问题" Fill list in SWI-Prolog":
?- create(4,Zs).
Zs = [4,5,6,7] ;
false.
这是您在问题中的查询:
create/2
由于?- create(N,[4,5,6,7]).
N = 4.
?- create(N,[4,_,_,_]).
N = 4.
是纯粹的,它是多功能的,也可以以不同的方式使用:
.navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus{
/* no need for box shadow */
}
答案 1 :(得分:0)
从某种意义上说,你正在做'反向'。尝试
create(N,L):-
M is 2*N,
create_list(N,M,L).
create_list(N,M,[N|R]):-
N < M,
N1 = N+1, % note: check if your Prolog accepts is/2 instead
create_list(N1,M,R).
create_list(M,M,[]).