Дан линейный конгруэнтный ГПСЧ:
x_n = (a*x_{n-1}+b*x_{n-2}) mod m
Где a, b, c, m - константы, заранее неизвестные.
gen :: Int -> Int -> Int -> Int -> Int -> Int -> Int
И для этого генератора надо вычислить период, т. е. написать функцию:
period :: (Int -> Int -> Int) -> Int
В принципе, рабочий вариант этой функции у меня уже был, но он использовал списки, а по заданию это запрещено. Как это более-менее красиво реализовать без списков? Пока в голову приходят только итеративные варианты, которые реализовывать не очень красиво.