Prolog - 在将每个值加倍后,从原始列表中创建元素的新列表?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Prolog - 在将每个值加倍后,从原始列表中创建元素的新列表?相关的知识,希望对你有一定的参考价值。

Example of trace produced. 我试图写一个谓词listDouble(L1, L2),其中L2中的每个元素都是L1中相应元素的两倍(即如果L1 = [1,2,3]则L2 = [2,4,6]),并且到目前为止这是我的代码:

listDouble([], [L2]).
listDouble([H|T], [L2|_]):-
        L is H * 2,
        listDouble(T, [L]).

但是,它不起作用,我想我很难理解如何将每个元素的双重添加到L2

答案
listDouble([],[]).
listDouble([H|T], [D|L]):-
        D is H * 2,
        listDouble(T,L).

以上是关于Prolog - 在将每个值加倍后,从原始列表中创建元素的新列表?的主要内容,如果未能解决你的问题,请参考以下文章

为啥在将 ArrayList 值加载到其中后 HashMap 不打印?

在Prolog中创建[1,2,3 ...,N]列表

简单Haskell函数中的中间值

在数组的每个位置获取数组函数加倍值?

Prolog 中的返回值

Prolog - 如何返回每个元素只出现一次的列表?