Kezdőoldal » Számítástechnika » Programozás » Ebben a feladatban tudnátok...

Ebben a feladatban tudnátok segíteni, mert nem teljesen világos mit kellene benne csinálni?

Figyelt kérdés

Összetett minták

Adjunk olyan x0, x1 és x2 kifejezéseket, amelyekre az alábbi függvény rendre 0-t, 1-t, illetve 2-t ad eredményül. Tehát adjuk meg az x0, x1 és x2 definícióit úgy, hogy f x0 == 0, f x1 == 1 és f x2 == 2 teljesüljenek. A megoldásba másoljuk bele az f definícióját is.


f :: [[(a,[b])]] -> Int

f [(x,xs):[y,ys]] = 0

f ([_]:[(x,[xs])]:[y,ys]:[]) = 1

f ([(x,y:_:[])]:[]) = 2


Teszteléshez:


f x0 == 0

f x1 == 1

f x2 == 2



2022. márc. 8. 16:22
 1/3 anonim ***** válasza:

először is értelmezni kellene f típusát

bonyolultnak tűnik, de haladjunk bentről kifelé

(a,[b]): ez azt jelenti, hogy egy rendezett pár, aminek az első tagja bármi lehet, a második tagja meg egy lista (és ebben a listában szintén bármi lehet)

erre példa: (1,[2,3,4])

[(a,[b])]: ez azt jelenti, hogy az előbb definiált párokból álló lista (ezt hívjuk belső listának)

erre példa: [(1,[2]), (1,[3,4,5])]

[[(a,[b])]]: ez pedig azt, hogy az előbbi listákból álló lista (ezt pedig hívjuk külső listának)

erre példa: [[(1,[2])]]


nézzük az első esetet (f [(x,xs):[y,ys]]):

[y,ys]: a lista pontosan 2 elemet tartalmaz (és nem pedig legalább 1-et, ne zavarjon meg az y és ys elnevezés, ha így írnánk, hogy (y:ys), akkor jelentené azt, hogy legalább 1 elemű)

(x,xs):[y,ys]: a belső lista pontosan 3 elemet tartalmaz (az előbbi alapján egyértelmű, nem magyaráznám), és az első elemére vonatkozó (x,xs) minta semmi féle megkötést nem tartalmaz arra, hogy mit kéne tartalmaznia ennek a párnak (azon kívül, hogy a függvény típusa alapján tudjuk, hogy az xs egy listát kell jelentsen)

[(x,xs):[y,ys]]: ez pedig azt jelenti, hogy külső lista pontosan egy elemet tartalmaz, az előbb definiált 3 elemű belső listát


a másodikban annyit segítek még, hogy a [y,ys]:[] minta jelentése: [[y,ys]] (tehát egy üres listába betesszük a pontosan 2 elemű listát)

2022. márc. 8. 20:26
Hasznos számodra ez a válasz?
 2/3 A kérdező kommentje:

Értem, az elsőt sikerült megoldani.

A másodiknál eddig jutottam, de valami még mindig nem jó : x1= [[(1,"a")], [(2,"b")],[(3,"c")]]

2022. márc. 8. 21:58
 3/3 anonim ***** válasza:

az [y,ys] azt jelenti, hogy ez a belső lista 2 elemű

de ha megnézed, akkor f típusából látszik, hogy a belső listák párokat tartalmaznak

tehát akkor az y és az ys is egy-egy párt jelent

2022. márc. 8. 22:10
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!