Also muss ich eine Funktion alsHaskell- Finden Element in einer Liste und das Rück seine Position
invFib :: Integer -> Maybe Integer
beschrieben machen, die einen Integer und sucht es in der Fibonacci-Sequenz nimmt (wie durch die Funktion unten beschrieben)
fibs :: [Integer]
fibs = 0:1:(zipWith (+) fibs (tail fibs))
und gibt den Index der Zahl Beispiel:
invFib 0
~>Just 0
invFib 1
~>Just 1
oder Just 2
map invFib [54, 55, 56]
~>[Nothing,Just 10,Nothing]
invFib (fibs !! 99)
~>Just 99
Ich habe versucht, eine Funktion zu machen, die eine Liste von ganzen Zahlen nimmt und den Index spuckt, aber es hält versagt . Irgendwelche Gedanken?
diese Funktion i tried-
findNum :: [Integer] -> Integer -> Integer -> Integer
findNum x:xs y z = if x == y
then z
else findNum xs y (z+1)
Edit: die Funktion auf Zahlen nicht in der Fibonacci-Sequenz friert, zeigt auch nur 1 Wert, wenn 1 eingegeben wird
invFib :: Integer -> Maybe Integer
invFib n = if n < 0
then Nothing
else fmap fromIntegral (elemIndex n fibs)
Sie sollten den Code, den Sie ausprobiert haben, wenn Sie eine Erklärung des Problems damit möchten. – Pubby
'findNum' sieht wie ein guter Anfang aus. Sie müssen sich die folgende Frage stellen: Angesichts der Tatsache, dass "fibs" eine unendliche Liste ist, wie würden Sie feststellen, dass "54" nicht in dieser Liste enthalten ist? – MtnViewMark