How can I double even numbers in a list in Prolog? For example:
X=[1,2,3,5,4]
The result should be:
X=[1,2,2,3,5,4,4]
Thank you!
How can I double even numbers in a list in Prolog? For example:
X=[1,2,3,5,4]
The result should be:
X=[1,2,2,3,5,4,4]
Thank you!
Based on
iwhen/2
, first define the reified test predicateeveninteger_t/2
:Then, in combination with
if_/3
defineintegers_evendups/2
like so:Here's the query you gave in your question:
Alternative #1
Based on
if_//3
, define dcgevenintegerdups//1
:Alternative #2
Using meta-predicate
foldl/4
and lambdas, the code gets even shorter:Even check can probably be done better, but it kinda works.