⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lists.pl

📁 prolog样例
💻 PL
字号:
/*****************************************************/

/* Prolog List Processing Examples                   */

/*****************************************************/



my_member(X,[X|_]).

my_member(X,[_|Y]) :- my_member(X,Y).



% my_length([],0).

% my_length([_|T],N) :- my_length(T,M), N is M + 1.



my_length(List,Length) :- 

   my_length(List,0,Length).



my_length([],Length,Length).

my_length([_|T],Acc,Length) :- 

   NewAcc is Acc + 1,

   my_length(T,NewAcc,Length).



smallest([H|T],S) :- smallest(T,H,S), !.



smallest([],S,S).

smallest([H|T],Acc,S) :- H < Acc, smallest(T,H,S).

smallest([H|T],Acc,S) :- smallest(T,Acc,S).



isort(L,S) :- isort(L,[],S), !.



isort([],S,S).

isort([H|T],Acc,S) :- insert(H,Acc,NewAcc),

                      isort(T,NewAcc,S).



insert(E,[],[E]).

insert(E,[H|T],[E|[H|T]]) :- E =< H.

insert(E,[H|T],[H|L]) :- insert(E,T,L).



% digits(+IntExpr,-List) and digits(-Int,+ListOfInt)



digits(N,D) :- integer(N), digits(N,[],D).

digits(N,D) :- var(N), value(D,0,N).



digits(N,Acc,[N|Acc]) :- N < 10, !.

digits(N,Acc,D)       :- H is N mod 10,

                         NewN is N // 10,

                         digits(NewN,[H|Acc],D).



value([],N,N).

value([H|T],Acc,N) :- integer(H),

                      H < 10,

                      AccNew is H + 10 * Acc,

                      value(T,AccNew,N).

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -