
Here's one: figure out what the following does :-)
puzzle = (!!) $ map (1:) $ iterate (s (lzw (+)) (1:)) [] where s f g x = f x (g x) lzw op xs [] = xs lzw op [] ys = ys lzw op (x:xs) (y:ys) = op x y : lzw op xs ys
Can be written simpler puzzle = (!!) $ iterate (s (lzw (+)) (0:)) [1] where s f g x = f x (g x) lzw op [] ys = ys lzw op (x:xs) (y:ys) = op x y : lzw op xs ys Incidentally, a small change gives a different series: puzzle1 = (!!) $ iterate (s ((lzw (+)).(0:)) (1:)) [] where s f g x = f x (g x) lzw op [] ys = ys lzw op (x:xs) (y:ys) = op x y : lzw op xs ys can you tell which? Without loading into GHCi? Finally, how can we possibly live without the following: puzzle2 = (!!) $ iterate (s ((lzw (+)).(1:).(0:)) (0:)) [1,1] where s f g x = f x (g x) lzw op xs [] = [] lzw op (x:xs) (y:ys) = op x y : lzw op xs ys
participants (1)
-
oleg@pobox.com