Hofstadter Figure-Figure sequences: Difference between revisions

Content added Content deleted
(→‎{{header|Haskell}}: Applied hlint hindent, adjusted one name to side-step Wiki formatting glitch)
(→‎{{header|Haskell}}: Applied Hlint, hindent to second Haskell version)
Line 980: Line 980:
<lang haskell>import Data.List (sort)
<lang haskell>import Data.List (sort)


r :: [Int]
r = scanl (+) 1 s
r = scanl (+) 1 s
s = 2:4:tail (compliment (tail r)) where
compliment = concat.interval
interval x = zipWith (\x y -> [x+1..y-1]) x (tail x)


s :: [Int]
s = 2 : 4 : tail (complement (tail r))
where
complement = concat . interval
interval x = zipWith (\x y -> [succ x .. pred y]) x (tail x)

main :: IO ()
main = do
main = do
putStr "R: "; print (take 10 r)
putStr "R: "
putStr "S: "; print (take 10 s)
print (take 10 r)
putStr "test 1000: ";
putStr "S: "
print (take 10 s)
print ([1..1000] == sort ((take 40 r) ++ (take 960 s)))</lang>
putStr "test 1000: "
print $ [1 .. 1000] == sort (take 40 r ++ take 960 s)</lang>
output:
output:
<pre>
<pre>