だから私は次のように記述された関数を作る必要があります
invFib :: Integer -> Maybe Integer
これは整数を取り、フィボナッチ数列でそれを探します(以下の関数で説明されているように)
fibs :: [Integer]
fibs = 0:1:(zipWith (+) fibs (tail fibs))
数値の例のインデックスを返します。
invFib 0
~>Just 0
invFib 1
~>Just 1
またはJust 2
map invFib [54, 55, 56]
~>[Nothing,Just 10,Nothing]
invFib (fibs !! 99)
~>Just 99
整数のリストを取得してインデックスを吐き出す関数を作成しようとしましたが、失敗し続けます。何かご意見は?
これは私が試した機能です-
findNum :: [Integer] -> Integer -> Integer -> Integer
findNum x:xs y z = if x == y
then z
else findNum xs y (z+1)
編集: フィボナッチ数列にない数値で関数がフリーズし、1 が入力されたときに 1 つの値のみが表示されます
invFib :: Integer -> Maybe Integer
invFib n = if n < 0
then Nothing
else fmap fromIntegral (elemIndex n fibs)