首页 > 解决方案 > Prolog遍历列表并通过将列表中的所有奇数加倍来将奇数变为偶数

问题描述

toEven(L1, L2)接受一个整数的输入列表并生成一个输出列表L2L1通过将每个奇数加倍,所有奇数变为偶数。

我该怎么做呢?

标签: prolog

解决方案


使用整数“位级”算术和库(yall):

?- [user].
|: toEven(L1, L2) :- maplist([N,M]>>(M is N<<(N mod 2)),L1,L2).
|: 
% user://1 compiled 0.00 sec, 1 clauses
true.

?- toEven([1,2,3,4,5],L2).
L2 = [2, 2, 6, 4, 10].

推荐阅读