New paste Repaste Download
import Data.Ratio
import Numeric (floatToDigits)
fracs :: [Rational]
fracs = [
  17 % 91,
  78 % 85,
  19 % 51,
  23 % 38,
  29 % 33,
  77 % 29,
  95 % 23,
  77 % 19,
   1 % 17,
  11 % 13,
  13 % 11,
  15 % 2,
   1 % 7,
  55 % 1]
start :: Integer
start = 2
isInt :: Float -> Bool
isInt n =
let (digs, p) = floatToDigits 10 n in
length digs == p
foo
  :: [Rational]  -- fractions (ie, program)
  -> Integer     -- seed integer (ie, pc)
  -> [Integer]
foo fs s =
  let mfn = (\f -> let v = fromRational $ (s%1) * f in (isInt v, v)) in
  let bs = map mfn fs in
  let bb = dropWhile (\x -> fst x == False) bs in
  if null bb then [s]
  else
    let nxt = round $ snd $ head bb in
    s : foo fs nxt
-- ghci> take 15 $ foo fracs 2
-- [2,15,825,725,1925,2275,425,25,1375,1625,1375,1625,1375,1625,1375]
-- shoul've been
-- [2,15,825,725,1925,2275,425,390,....
Filename: None. Size: 906b. View raw, , hex, or download this file.

This paste expires on 2024-11-14 05:18:28.118758. Pasted through web.