首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复制列表的元素

复制列表的元素
EN

Stack Overflow用户
提问于 2015-02-24 18:25:28
回答 1查看 205关注 0票数 1

编写一个复制列表中每个元素的函数。例如:{duply1-2 3}返回列表1 1 2 2 3 3.

我怎么用奥兹莫扎特来做呢?我不知道奥兹的正法,在prolog里会是这样的:

代码语言:javascript
复制
even(N) :- 
    N mod 2 =:= 0.    

doubleeven([],[]).

doubleeven([H|T], [H,H|Z]) :-
    even(H),
    !,
    doubleeven(T,Z).

doubleeven([H|T], [H|Z]) :-
    doubleeven(T,Z).
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-25 00:02:08

这是一种基于模式识别的解决方案。检查输入的数据是否是一个列表(即,它有一个头和一个尾( H =T)),然后第一个元素绑定到变量标识符H。这样,在对列表的其余部分执行相同的操作之前,只需添加两个H就可以执行重复操作。如果L是0,请记住返回0 --空列表,这样你的最终答案也是一个列表。

代码语言:javascript
复制
declare
fun {Duplicate L}
   case L of H|T then
      H|H|{Duplicate T}
   else
      nil
   end
end

{Browse {Duplicate [1 2 3]}}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28703411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档