16 lines
384 B
Plaintext
16 lines
384 B
Plaintext
main :: [sys_message]
|
|
main = [Stdout (lay (map (show . take 30) [powers_of_3, evil, odious]))]
|
|
|
|
powers_of_3 :: [num]
|
|
powers_of_3 = map (popcount . (3^)) [0..]
|
|
|
|
evil :: [num]
|
|
evil = filter f [0..] where f n = popcount n mod 2 = 0
|
|
|
|
odious :: [num]
|
|
odious = filter f [0..] where f n = popcount n mod 2 = 1
|
|
|
|
popcount :: num -> num
|
|
popcount 0 = 0
|
|
popcount n = n mod 2 + popcount (n div 2)
|