1. Napište predikát kartSoucin(A,B,C), kde C je kartézkým průnikem množin A,B. Množiny reprezentujte seznamem. Příklad: ?-kartSoucin([a,b],[1,2,3],C). C=[[a,1],[a,2],[a,3],[b,1],[b,2],[b,3]] 2. Napište predikát spirala(M,S), který z množiny M (reprezentovanou seznamem seznamů) vytvoří spirálu. Příklad: ?-spirala([[1,2,3,4],[5,6,7,8],[9,10,11,12]],S). S=[1,2,3,4,8,12,11,10,9,5,6,7]. 3. Napište predikát kombinace(N,L,C), kde za C dostaneme při odmítání různé kombinace N prvků ze seznamu L Příklad: ?-kombinace(2,[1,2,3],C). C=[1,2] ; C=[1,3] ; C=[2,3] ; No. 4. Napište predikát symetricky(T1,T2), který uspěje, pokud je strom T1 symetrickou kopií T2 (nezáleží na hodnotách v uzlech). Stromy mějme reprezentované standardně t(L,X,R), kde L (resp. R) je levý (resp. pravý) syn uzlu a X je hodnota uzlu. Pro listy použijeme nil. Příklad: ?-symetricky(t(nil,a,t(nil,b,nil)),t(t(nil,1,nil),2,nil)). Yes. 5. Napište perdikát model(F,V,B), ktery unifikuje B=1, pokud V je modelem F a B=0 jinak. Předpokládejte, že máte definované operátory ~,/\,\/,=>,<=> (od nejnižší priority k nejvyšší). Pravdivostní tabulky si zadefinujte libovolně. 6. V šuplíku máte červené a modré ponožky (všechny levé, jak to tak bývá). Žádná ponožka není červená a modrá zároveň. Chcete je rozdělit do pěti hromad tak, aby v každé bylo stejně modrých ponožek. Červené mohou být kdekoli. Ale pozor! Nesmíte použít aritmetiku. - napište predikát rozhazej(P,H), který rozhazí seznam ponožek P do seznamu hromad H. To, jstli je ponožka červená nebo modrá otestujete pomocí predikátu modry/1, cerveny/1. Příklad: % p1, p3, p5, p7, p9 jsou modré, p2,p4,p6,p8,p10 jsou červené ?-rozhazej([p1,p2,p3,p4,p5,p6,p7,p8,p9,p10],H). H=[[p1,p2,p4],[p3,p6],[p5],[p7,p8],[p9,p10]