Yellowstone sequence: Difference between revisions

Content added Content deleted
Line 184: Line 184:
import Codec.Picture
import Codec.Picture
import Control.Arrow (second)
import Control.Arrow (second)

------------------YELLOWSTONE PERMUTATION------------------
------------------YELLOWSTONE PERMUTATION------------------
yellowstone :: [Integer]
yellowstone :: [Integer]
Line 190: Line 190:
where
where
nextWindow :: (Integer, Integer, [Integer]) -> (Integer, Integer, [Integer])
nextWindow :: (Integer, Integer, [Integer]) -> (Integer, Integer, [Integer])
nextWindow (p2, p1, rest) =
nextWindow (p2, p1, rest) = (p1, n, residue)
where
let [rp2, rp1] = relativelyPrime <$> [p2, p1]
go (x:xs)
[rp2, rp1] = relativelyPrime <$> [p2, p1]
| (rp1 x && not (rp2 x)) = (x, xs)
go (x:xs)
| otherwise = second ((:) x) (go xs)
| rp1 x && not (rp2 x) = (x, xs)
(n, residue) = go rest
| otherwise = second ((:) x) (go xs)
in (p1, n, residue)
(n, residue) = go rest
active (_, x, _) = x
active (_, x, _) = x

relativelyPrime :: Integer -> Integer -> Bool
relativelyPrime :: Integer -> Integer -> Bool
relativelyPrime a b = 1 == gcd a b
relativelyPrime a b = 1 == gcd a b

----------30 FIRST TERMS, AND CHART OF FIRST 100-----------
----------30 FIRST TERMS, AND CHART OF FIRST 100-----------
main :: IO (Image PixelRGBA8)
main :: IO (Image PixelRGBA8)
Line 210: Line 210:
chartRender env $
chartRender env $
plot (line "Yellowstone terms" [zip [1 ..] (take 100 yellowstone)])
plot (line "Yellowstone terms" [zip [1 ..] (take 100 yellowstone)])

---------------------CHART GENERATION----------------------
---------------------CHART GENERATION----------------------
chartRender
chartRender
Line 219: Line 219:
in renderDia Rasterific (RasterificOptions (mkWidth width)) $
in renderDia Rasterific (RasterificOptions (mkWidth width)) $
fst $ runBackendR env (toRenderable (execEC ec))
fst $ runBackendR env (toRenderable (execEC ec))

------------------------ LOCAL FONT------------------------
------------------------ LOCAL FONT------------------------
chartEnv :: IO (DEnv Double)
chartEnv :: IO (DEnv Double)