Příklady ze cvičení - Kryl

Přednáška je věnována neprocedurálnímu programování. Většina semestru je věnována programování v jazyku Prolog, ve kterém studenti i ladí zápočtové programy. Informativně se studenti seznámí i s jazykem LISP a neprocedurálními částmi programovacích systémů.
mmrmartin
Matfyz(ák|ačka) level I
Příspěvky: 19
Registrován: 3. 6. 2015 21:55
Typ studia: Informatika Bc.
Bydliště: Kajka / Jihlava

Příklady ze cvičení - Kryl

Příspěvek od mmrmartin »

Pro další generace :-) a pro procvičení ke zkoušce sem dávám příklady, co nám zadával Kryl na cvičení. Přišly mi docela užitečný, ale jsou pracnější...
  1. Prolog: Rozdělte seznam na 5 částí, tak aby se délka seznamů lišila nejvýše o jeden prvek.

    Kód: Vybrat vše

    % rozdel(+Seznam, -S1, -S2, -S3, -S4, -S5):- rozdeli seznam na skoro
    % stejne casti (+/-1), |Seznam| >= 5
    
    Pořadí prvků v seznamu by mělo být zachováno.
  2. Prolog: Transponujte matici

    Kód: Vybrat vše

    %trans(+Mat, -Trans):- Transponuje matici
    
  3. Prolog: Napište QuickSort v Prologu.
  4. Prolog: Vypište seznam uzlů ve stromu a seřaďte je podle vzdálenosti od nejbližšího listu.

    Kód: Vybrat vše

    % demo strom
    d(t(
    	t(nill,a,nill),
    	b,
    	t(
    		nill,
    		c,
    		t(
    			nill,
    			d,
    			t(
    				t(
    					t(nill,e,nill),f,nill),
    					g,
    					t(nill,h,nill)
    			)
    		)
    	)
    )).
    
  5. Prolog: Naprogramujte procedury, které realizují převody mezi dvěma reprezentacemi permutací čísel 1..N

    Kód: Vybrat vše

    % p(N,Vektor obrazů)
    % c(N,Seznam netriviálních cyklů)
    
    Příklad:

    Kód: Vybrat vše

    p(6,[3,5,1,2,4,6])
    a

    Kód: Vybrat vše

    c(6,[ [1,3], [2,5,4] ])
    reprezentují stejnou permutaci
    identita na 4 prvních je reprezentována jako

    Kód: Vybrat vše

    p(4,[1,2,3,4])
    a

    Kód: Vybrat vše

    c(4,[]).
  6. Prolog: Kompletní program, který pomocí dijkstrova algoritmu umí odpovídat na otázky

    Kód: Vybrat vše

    nejkrcesta(+STart,+cíl, -Delka, -NejkrCesta)
    nejkrcesty(+Strat, -SseznamNejkratšíchCestSDelkamiDoVsechDostupnýchVrcholu)
    
    Včetně vstupu ze souboru a výstupu do souboru
  7. Hascel: Derivace a n-tá derivace mocninné řady
  8. Hascel: Listy binárního stromu odleva do prava bez konkatenace
  9. Hascel: Reprezentujte řídkou matici pomocí typu

    Kód: Vybrat vše

    data Mat = M Int Int [ (Int,Int,Float0 ]
    Význam: počet řádek, počet sloupců, seznam nenulových členů (i,j, aij) řádek i, sloupec j, hodnota aij
    uspořádaný podle i a potom podle j

    Naprogramujte transpozici a pomocí ní násobení řídkých matic
Odpovědět

Zpět na „PRG005 Neprocedurální programování“