Racionális számok felsorolása

Rákövetkező

Készítsük el a nextRational függvényt!

A függvény a következő műveleteket végezze:

Legyen az x racionális szám a függvény bemenete. Legyen y az x lefelé kerekített egész része (floor függvényt kell használni). Legyen a végeredmény a 2y+1-x szám reciproka.

Figyeljünk arra, hogy a floor függvény egész számot (Integral) ad vissza, ebből a fromIntegral függvénnyel tudunk racionális számot készíteni.

nextRational :: Rational -> Rational

Test>
1 :% 2 :: Rational
Test>
2 :% 1 :: Rational
Test>
13 :% 3 :: Rational

Pozitív racionális számok

Soroljuk fel az összes pozitív racionális számot pontosan egyszer!

Segítség: A pozitív racionális számok nem ismétlődő sorozata előállítható úgy, hogy kiindulunk az 1 számból (ez lesz az első), majd folyamatosan alkalmazzuk a nextRational függvényt.

positiveRationals :: [Rational]

Test>
[1 :% 1, 1 :% 2, 2 :% 1, 1 :% 3, 3 :% 2] :: [Rational]

Racionális számok

Soroljuk fel az összes racionális számot pontosan egyszer!

rationals :: [Rational]

Test>
[0 :% 1, 1 :% 1, -1 :% 1, 1 :% 2, -1 :% 2, 2 :% 1, -2 :% 1, 1 :% 3, -1 :% 3, 3 :% 2] :: [Rational]

Index

Készítsünk egy függvényt ami megmondja hogy egy adott racionális szám hanyadik a sorozatban!

rationalIndex :: Rational -> Int

Test>
15 :: Int

Általánosítva a problémát, készítsük el a következő függvényt:

index :: Eq a => a -> [a] -> Int

Test>
3 :: Int