# Zkouška 21.6.2018

<{ForumPost(poster="Quimby", timestamp=2018-06-22 00:40:01)}>
**První příklad(prolog):**  
Nalezněte lexikograficky předchozí permutaci:(Pokud není tak false)

    prev([1,2,6,3,4,5,7],V).
       V = [1,2,5,7,6,4,3] 

**Druhý příklad(prolog):**  
Dostaneme list atomů a list binárních operátorů. Máme postupně vydat všechny termy obsahující všechny atomy (pořadí zleva doprava), operátory se mohou opakovat.

    gen([a,b,c],[xor],V).
      V = a xor (b xor c).
      V =(a xor b) xor c.
    gen([a,b,c],[xor,and],V).
      V = a xor (b xor c).
      V = a xor (b and c).
      V = a and (b xor c).
     V = a and (b and c)...
    

**Třetí příklad(haskell):**  
Ohodnotit vrcholy obecného n-arní stromu v pořadí v jakém jsou vrcholy uzavírány, takže post-fixově. Měla se napsat datová struktura pro strom, typová hlavička fce a pak tu funkci implementovat:

    data Strom a = Nil | Strom a [Strom a]
    label::Strom a -> Strom (a,Int)
    

**Čtvrtý příklad(haskell):**  
Implementovat horní celou část čísla = kladná zaokrouhluje nahoru, záporná dolů. Mělo by to běžet v čase logn a samozřejmě bez použítí ceil/floor a podobných fcí.  
  
**Velký příklad:**  
Na vstupu jsou kostičky domina(dvojice symbolů) a máme je uspořádat do co nejmenšícho počtu řetězců. V řetězci na sebe musí navazovat:

    Vstup: [(8,8),(1,2),(2,3),(3,4), (7,8)]
    Reseni: [[(1,2),(2,3),(3,4)],[(7,8),(8,8)]]
    

Můžeme si vybrat jazyk, musíme navrhnout reprezentaci vstupu,výstupu a samozřejmě algoritmus. Měli jsme najít polynomiální řešení.
<{/ForumPost}>

<{ForumPost(poster="Alfonz", timestamp=2018-09-15 19:31:47)}>
Ahoj. K tomu prvemu prikladu...  
Riesenim nema byt nahodou zoznam \[1,2,5,7,6,4,3] ?  
Pokial nie, berem s5, asi som zle pochopil ulohu. Pokial ano, tak sa hodi to opravit, nech sa nemylia aj ostatni :) Vdaka
<{/ForumPost}>

<{ForumPost(poster="Quimby", timestamp=2018-09-16 12:12:05)}>
Hmm, nějak se mi spletla 5 a 3, máš samozřejmě pravdu, jinak by to nebyla ani permutace. Opraveno.
<{/ForumPost}>

