找到满足等式的最小数

时间:2017-03-23 09:51:39

标签: haskell

我需要解决这个问题:

(n + a)^k < m^n

鉴于akm,我需要找到解决不等式的最低n

我唯一想到的是:

search :: Integer -> Integer -> Integer -> Integer 
search a k m = 
    if (inf!!0+a)^k < m^inf!!0) then inf!!0

基本上我已经从[0..∞]创建了一个列表,我尝试从0开始读取每个元素,但是我无法从第一个元素转到第二个元素。

我可以使用我想要的任何类型的额外方程,但search签名不能改变。

2 个答案:

答案 0 :(得分:4)

我只会使用列表推导和head

search :: Integer -> Integer -> Integer -> Integer 
search a k m = head [ n | n <- [0..], (n + a)^k < m^n ]

列表理解只是

的语法糖
search :: Integer -> Integer -> Integer -> Integer 
search a k m = head filtered
  where
    filtered = filter pred [0..]
    pred n   = (n + a)^k < m^n

答案 1 :(得分:0)

如果您不想在@Zeta's solution中使用列表理解,则可以使用 git fetch origin git checkout origin/whatever

dropWhile