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ů.

Příklady ze cvičení - Kryl

Příspěvekod mmrmartin » 15. 7. 2016 15:11

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
mmrmartin
Matfyz(ák|ačka) level I
 
Příspěvky: 19
Registrován: 3. 6. 2015 20:55
Bydliště: Kajka / Jihlava
Typ studia: Informatika Bc.

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

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník

cron