13 lines
484 B
Prolog
13 lines
484 B
Prolog
is_evil(Number) :- popcount(Number) mod 2 =:= 0.
|
|
|
|
:- numlist(0, 29, Powers),
|
|
maplist([P0, P] >> (P is popcount(3 ^ P0)), Powers, PowerPopcounts),
|
|
numlist(0, 59, Numbers),
|
|
partition(is_evil, Numbers, EvilNumbers, OdiousNumbers),
|
|
writeln('The pop counts of the first 30 powers of 3 are:'),
|
|
writeln(PowerPopcounts),
|
|
writeln('The first 30 evil numbers are:'),
|
|
writeln(EvilNumbers),
|
|
writeln('The first 30 odious numbers are:'),
|
|
writeln(OdiousNumbers).
|