Úvod

Lisp

Syntaktické vzory rekurzie

Programovacie schémy

Na najvyššej úrovni

Predikáty

  1. Príklad testatom
    Test, či sa zoznam skladá len z atómov na najvyššej úrovni.
    Zadanie Ako začať Riešenie

  2. Príklad parny-pocet
    Test, či má zoznam párny počet prvkov (nepoužívať funkciu LENGTH).
    Zadanie Ako začať Riešenie

  3. Príklad neparny-pocet
    Test, či má zoznam nepárny počet prvkov (nepoužívať funkciu LENGTH).
    Zadanie Ako začať Riešenie

  4. Príklad hladaj1
    Predikát na hľadanie aspoň jedného z dvoch zadaných prvkov na najvyššej úrovni v zozname.
    Zadanie Ako začať Riešenie

  5. Príklad hladaj2
    Predikát na hľadanie dvoch zadaných prvkov na najvyššej úrovni v zozname (musia sa vyskytovať oba súčasne).
    Zadanie Ako začať Riešenie

  6. Príklad testcislo
    Test, či daný zoznam obsahuje iba čísla, na najvyššej úrovni.
    Zadanie Ako začať Riešenie

  7. Príklad porovnaj
    Predikát (POROVNAJ zoznam význačný-prvok) na zistenie zhodnosti častí zoznamu naľavo a napravo od význačného-prvku.
    Zadanie Ako začať Riešenie

  8. Príklad trojice
    Test, či zadaný zoznam reprezentuje postupnosť trojíc čísel ((1 2 4)(5 2 7)....) (nepoužívajte funkciu LENGTH).
    Zadanie Ako začať Riešenie

  9. Príklad vyraz
    Test či zadaný s-výraz predstavuje aritmetický výraz: * každé číslo je aritmetický výraz * ak a1, a2 sú aritmetické výrazy, aj trojprvkové zoznamy (a1 + a2) (a1 - a2) (a1 * a2) (a1 div a2) sú aritmetické výrazy.
    Zadanie Ako začať Riešenie

Počet

  1. Príklad spocitaj-cisla
    Funkcia, ktorá vráti počet tých prvkov zoznamu, ktoré sú číslami na najvyššej úrovni v zozname.
    Zadanie Ako začať Riešenie

  2. Príklad spocitaj-atomy
    Vráti počet atómov v zadanom zozname na najvyššej úrovni.
    Zadanie Ako začať Riešenie

  3. Príklad rozdelasum
    Funkcia (POČÍTAJ-PRVKY zoznam význačný-prvok), ktorá vráti zoznam dvoch čísiel. Prvé číslo je počet prvkov naľavo od význačného-prvku, druhé napravo.
    Zadanie Ako začať Riešenie

  4. Príklad vratmaxzoz
    Funkcia vráti počet prvkov najdlhšieho podzoznamu zadaného zoznamu na najvyššej úrovni.
    Zadanie Ako začať Riešenie

  5. Príklad cislavint
    Funkcia vráti počet prvkov zoznamu čísel, ktoré sú menšie ako daná dolná hranica alebo väčšie ako daná horná hranica.
    Zadanie Ako začať Riešenie

Prvok zoznamu

  1. Príklad min
    Minimálny prvok postupnosti čísel.
    Zadanie Ako začať Riešenie

  2. Príklad max
    Maximálny prvok postupnosti čísel.
    Zadanie Ako začať Riešenie

  3. Príklad predposledny
    Funkcia, ktorá vráti predposledný prvok zoznamu.
    Zadanie Ako začať Riešenie

  4. Príklad NTHCDR
    Funkcia, ktorá vráti n-tý CDR zoznamu. Ak n je 0 tak vráti pôvodný zoznam (NTHCDR 2 '(a b c d)) --> (c d).
    Zadanie Ako začať Riešenie

  5. Príklad ltmax
    Funkcia vráti taký prvok postupnosti čísel, ktorý je menší ako zadané číslo a zároveň najväčší zo všetkých takýchto čísel.
    Zadanie Ako začať Riešenie

  6. Príklad gtmin
    Funkcia vráti taký prvok postupnosti čísel, ktorý je väčší ako zadané číslo a zároveň najmenší zo všetkých takýchto čísel.
    Zadanie Ako začať Riešenie

  7. Príklad my-get
    Napíšte vlastnú verziu funkcie GET (MY-GET). Použite funkciu SYMBOL-PLIST.
    Zadanie Ako začať Riešenie

Pole

  1. Príklad pozicia
    Pozícia daného prvku v poli, ktoré sa reprezentuje postupnosťou postupností, kde jednotlivé prvky na najvyššej úrovni predstavujú riadky poľa.
    Zadanie Ako začať Riešenie

  2. Príklad vratprvok
    Prvok poľa určený zadanými súradnicami x a y. Pole sa reprezentuje postupnosťou postupností, kde jednotlivé prvky na najvyššej úrovni predstavujú riadky poľa.
    Zadanie Ako začať Riešenie

  3. Príklad rozmerpola
    Funkcia, ktorá vráti rozmer zadaného dvojrozmerného pola (x y). Pole sa reprezentuje zoznamom, ktorého prvky sú zoznamy (riadky pola).
    Zadanie Ako začať Riešenie

  4. Príklad nahrad
    Nahradí prvok poľa určený súradnicami x,y zadaným prvkom. Pole sa reprezentuje postupnosťou postupností, kde jednotlivé prvky na najvyššej úrovni predstavujú riadky poľa.
    Zadanie Ako začať Riešenie

  5. Príklad vytvor
    Funkcia vytvorí pole rozmerov x a y s počiatočnými hodnotami 0. Pole je reprezentované postupnosťou postupností, kde jednotlivé prvky na najvyššej úrovni predstavujú riadky poľa.
    Zadanie Ako začať Riešenie

Tabuľka

  1. Príklad MYASSOC
    Nech S je postupnosť bodka-dvojíc, t.j. má tvar ((a1 . b1) (a2 . b2) ... (an . bn)). Definujte funkciu (ASSOC x S) tak, že vracia prvé bi, pre ktoré x = ai.
    Zadanie Ako začať Riešenie

  2. Príklad keyin
    Test, či sa v zozname tvaru ((a1 . b1)(a2 . b2)...(an . bn)) nachádza na mieste ľavej časti niektorej bodka dvojice zadaný prvok.
    Zadanie Ako začať Riešenie

  3. Príklad kluce
    Funkcia vráti zoznam (k1 k2 ...kn), ktorý vytvorí zo zadaného zoznamu ((k1 h1)(k2 h2)....(kn hn)).
    Zadanie Ako začať Riešenie

  4. Príklad zrus
    Funkcia, ktorá zruší taký prvok zo zoznamu v tvare ((k1 . h1) ... (kn . hn)), ktorého ľavá časť je zhodná so zadaným s-výrazom.
    Zadanie Ako začať Riešenie

Množina

  1. Príklad podmnoz
    Funkcia podmnožina, ktorá vráti T, ak sa všetky s-výrazy nachádzajúce sa v zadanom zozname na najvyššej úrovni nachádzajú v druhom zadanom zozname (množina sa reprezentuje zoznamom).
    Zadanie Ako začať Riešenie

  2. Príklad vloz
    Vloží do usporiadanej postupnosti čísel zadané číslo tak, aby ostalo zachované usporiadanie. V prípade, že sa také číslo už v postupnosti nachádza vráti nezmenenú postupnosť (nepoužívať funkciu MEMBER).
    Zadanie Ako začať Riešenie

  3. Príklad zluc
    Zlúči dve usporiadané postupnosti čísel do usporiadanej postupnosti, pričom nie je povolený viacnásobný výskyt prvkov.
    Zadanie Ako začať Riešenie

  4. Príklad zrusmin
    Funkcia zruší z neusporiadanej postupnosti čísel minimum a vráti novú postupnosť.
    Zadanie Ako začať Riešenie

  5. Príklad zrusmax
    Funkcia zruší z neusporiadanej postupnosti čísel maximum a vráti novú postupnosť.
    Zadanie Ako začať Riešenie

Filter

  1. Príklad cislavint
    Funkcia, ktorá vráti prvky zadaného zoznamu čísel, ktoré sú menšie ako daná dolná hranica a väčšie ako daná horná hranica.
    Zadanie Ako začať Riešenie

  2. Príklad except
    Všetky prvky zoznamu okrem posledného prvku.
    Zadanie Ako začať Riešenie

  3. Príklad zrusn
    Zruší n-tý prvok zoznamu.
    Zadanie Ako začať Riešenie

  4. Príklad firstk
    Prvých K prvkov zoznamu.
    Zadanie Ako začať Riešenie

  5. Príklad restk
    Posledných K prvkov zoznamu.
    Zadanie Ako začať Riešenie

  6. Príklad bezk
    Funkcia, ktorá vynechá prvých K prvkov zoznamu.
    Zadanie Ako začať Riešenie

  7. Príklad postmn
    Postupnosť M-tého až N-tého prvku zadaného zoznamu.
    Zadanie Ako začať Riešenie

  8. Príklad stred
    Nový zoznam bez prvého a posledného prvku.
    Zadanie Ako začať Riešenie

  9. Príklad pozp
    Zoznam párnych výskytov prvkov (t.j. vráti druhý, štvrtý,... prvok zo zadaného zoznamu).
    Zadanie Ako začať Riešenie

  10. Príklad pozn
    Zoznam nepárnych výskytov prvkov (t.j. vráti prvý, tretí,... prvok zo zadaného zoznamu).
    Zadanie Ako začať Riešenie

  11. Príklad PRAVA-STRANA
    Funkcia (PRAVA-STRANA zoznam vyznacny-prvok), ktorá vráti nový zoznam, pozostávajúci z časti vstupného zoznamu vpravo od vyznacneho-prvku.
    Zadanie Ako začať Riešenie

  12. Príklad LAVA-STRANA
    Funkcia (LAVA-STRANA zoznam vyznacny-prvok), ktorá vráti nový zoznam, pozostávajúci z časti vstupného zoznamu vľavo od vyznacneho-prvku.
    Zadanie Ako začať Riešenie

  13. Príklad unique
    Definujte funkciu, ktorá vráti zoznam vytvorený zo zadaného zoznamu vylúčením každého takého prvku, ktorý sa ešte neskôr na najvyššej úrovni v zadanom zozname vyskytuje.
    Zadanie Ako začať Riešenie

Zobrazenie

  1. Príklad zmen
    Funkcia vráti zoznam, ktorý vznikne zámenou všetkých výskytov prvku1 za prvok2 v zadanom zozname na najvyššej úrovni.
    Zadanie Ako začať Riešenie

  2. Príklad num2S
    Funkcia, ktorá všetky numerické atómy nahradí atómom 'NUM na najvyššej úrovni v zozname.
    Zadanie Ako začať Riešenie

  3. Príklad num2N
    Funkcia, ktorá všetky nenumerické atómy nahradí číslom 0 na najvyššej úrovni v zozname.
    Zadanie Ako začať Riešenie

  4. Príklad prehod
    Výmena prvkov v zozname po dvojiciach na najvyššej úrovni.
    Zadanie Ako začať Riešenie

  5. Príklad nasobs
    Funkcia, ktorá vráti zoznam čísel, ktoré sa vytvoria ako súčin postupne každého prvku zadaného zoznamu čísel a daného čísla.
    Zadanie Ako začať Riešenie

  6. Príklad nasobz
    Funkcia, ktorá vytvorí zoznam čísel vynásobením vždy zodpovedajúcich prvkov dvoch vstupných zoznamov.
    Zadanie Ako začať Riešenie

  7. Príklad sucetz
    Funkcia, ktorá vytvorí zoznam čísel sčítaním vždy zodpovedajúcich prvkov dvoch vstupných zoznamov.
    Zadanie Ako začať Riešenie

  8. Príklad map
    Funkcia, ktorá dostane na vstup číslo a zoznam čísiel. Výstupom je zoznam, ktorý obsahuje jednotky práve na pozíciách, kde sa vo vstupnom zozname na najvyššej úrovni nachádza číslo rovnaké ako prvý argument. Na ostatných pozíciách sú nuly..
    Zadanie Ako začať Riešenie

  9. Príklad usporiadajv
    Funkcia vráti vzostupne usporiadaný vstupný zoznam čísel.
    Zadanie Ako začať Riešenie

  10. Príklad usporiadajz
    Funkcia vráti zostupne usporiadaný vstupný zoznam čísel.
    Zadanie Ako začať Riešenie

  11. Príklad vymenfl
    Funkcia, ktorá vymení prvý prvok zoznamu s posledným.
    Zadanie Ako začať Riešenie

  12. Príklad rotp
    Funkcia, ktorá rotuje prvky zoznamu vpravo.
    Zadanie Ako začať Riešenie

  13. Príklad rotl
    Funkcia, ktorá rotuje prvky zoznamu vľavo.
    Zadanie Ako začať Riešenie

Iné

  1. Príklad poz0
    Funkcia, ktorá indikuje miesto výskytu prvej nuly v zozname, ak sa nula v zozname nenachádza vráti NIL.
    Zadanie Ako začať Riešenie

  2. Príklad pozk
    Pozícia daného kľúča v zozname ((k1 . b1)...(kn . bn)).
    Zadanie Ako začať Riešenie

  3. Príklad sucet
    Definujte funkciu pre sčítanie čísiel, ak predpokladáme, že náš funkcionálny jazyk pozná iba funkcie ADD1 (inkrementácia) a SUB1 (dekrementácia).
    Zadanie Ako začať Riešenie

  4. Príklad sucin
    Definujte funkciu násobenia dvoch čísiel, ktorá vystačí s funkciami + a SUB1.
    Zadanie Ako začať Riešenie

  5. Príklad sucetnm
    Funkcia, ktorá vráti súčet všetkých čísel od N po M.
    Zadanie Ako začať Riešenie

  6. Príklad sum
    Výpočet súčtu štvorcov rozdielov jednotlivých prvkov dvoch zadaných postupností.
    Zadanie Ako začať Riešenie

  7. Príklad matica
    Funkcia, ktorá vypíše na obrazovku maticu znakov '*', rozmery matice sa zadajú na vstupe.
    Zadanie Ako začať Riešenie

  8. Príklad pripoj
    Pripojí prvok na koniec zoznamu.
    Zadanie Ako začať Riešenie

  9. Príklad vlozza
    Pridá daný s-výraz za n-tý prvok zoznamu.
    Zadanie Ako začať Riešenie

  10. Príklad vloz
    Vloží do usporiadanej postupnosti čísel zadané číslo tak, aby ostalo zachované usporiadanie.
    Zadanie Ako začať Riešenie

  11. Príklad zrus
    Funkcia vráti zoznam, ktorý vznikne odstránením všetkých výskytov zadaného prvku na najvyššej úrovni.
    Zadanie Ako začať Riešenie

  12. Príklad zdvoj
    Vytvorenie zoznamu zdvojením každého prvku pôvodného zoznamu na najvyššej úrovni v zozname.
    Zadanie Ako začať Riešenie

  13. Príklad obraz
    Funkcia, ktorá do zadaného zoznamu pridá jeho zrkadlový obraz, napr. zo zadaného zoznamu (a b c) vytvorí (a b c c b a).
    Zadanie Ako začať Riešenie

  14. Príklad transponuj
    Vráti transponovanú maticu, t.j. riadky sú stĺpce a stĺpce sú riadky.
    Zadanie Ako začať Riešenie

  15. Príklad fib
    Implementujte funkciu fib(n) = 1, ak n = 1 alebo 2 = fib(n-1) + fib(n-2) ak n > 2 urobte aj efektívnejšiu verziu, ktorá iba raz rekurzívne volá funkciu s rovnakými parametrami - pomocou ďalších parametrov.
    Zadanie Ako začať Riešenie

Na ľubovolnej úrovni

Predikáty

  1. Príklad some
    Predikát na hľadanie aspoň jedného z dvoch zadaných prvkov na ľubovoľnej úrovni v zozname.
    Zadanie Ako začať Riešenie

  2. Príklad both
    Predikát na hľadanie dvoch zadaných prvkov na ľubovoľnej úrovni v zozname (musia sa vyskytovať oba súčasne).
    Zadanie Ako začať Riešenie

  3. Príklad everynum
    Test, či daný zoznam obsahuje na najnižšej úrovni iba čísla.
    Zadanie Ako začať Riešenie

  4. Príklad everyat
    Test, či daný zoznam obsahuje na najnižšej úrovni iba symboly (nenumerické atómy).
    Zadanie Ako začať Riešenie

  5. Príklad notnep
    Test, či sa v zozname nenachádza na ľubovoľnej úrovni žiadne nepárne číslo.
    Zadanie Ako začať Riešenie

Počet

  1. Príklad pocetc
    Funkcia, ktorá vráti počet tých prvkov zoznamu, ktoré sú číslami na ľubovoľnej úrovni v zozname.
    Zadanie Ako začať Riešenie

  2. Príklad poceta
    Vráti počet atómov v zadanom zozname na ľubovoľnej úrovni.
    Zadanie Ako začať Riešenie

  3. Príklad POCITAJ-ATOMY
    Funkcia (POČÍTAJ-ATÓMY zoznam význačný-prvok), ktorá vráti zoznam dvoch čísiel. Prvé číslo je počet atómov naľavo od význačného-prvku, druhé napravo; na ľubovoľnej úrovni.
    Zadanie Ako začať Riešenie

  4. Príklad maxzoz
    Funkcia vráti počet prvkov najdlhšieho podzoznamu zadaného zoznamu na ľubovoľnej úrovni.
    Zadanie Ako začať Riešenie

  5. Príklad interval
    Funkcia vráti počet prvkov zoznamu čísel na ľubovoľnej úrovni, ktoré sú menšie ako daná dolná hranica a väčšie ako daná horná hranica.
    Zadanie Ako začať Riešenie

  6. Príklad maxdeep
    Funkcia, ktorá vráti maximálnu hĺbku binárneho stromu, ktorý reprezentuje daný s-výraz (atómy sú listy stromu a ostatné časti sú bodka dvojice s nasledovníkmi: CAR a CDR časť) (HLBKA '(A . B) -> 1, (HLBKA '((A B C D))) -> 5.
    Zadanie Ako začať Riešenie

Prvok zoznamu

  1. Príklad maxc
    Maximálny prvok zoznamu (číslo); uvažujú sa čísla na všetkých úrovniach v zozname.
    Zadanie Ako začať Riešenie

  2. Príklad minc
    Minimálny prvok zoznamu (číslo); uvažujú sa čísla na všetkých úrovniach v zozname.
    Zadanie Ako začať Riešenie

  3. Príklad maxpc
    Maximálne párne číslo, pričom sa uvažujú atómy na všetkých úrovniach v zozname.
    Zadanie Ako začať Riešenie

  4. Príklad ltmax
    Funkcia vráti prvé také číslo, ktoré sa nachádza na ľubovoľnej úrovni v zadanom zozname a je menšie ako zadané číslo a zároveň najväčšie zo všetkých takýchto čísel.
    Zadanie Ako začať Riešenie

  5. Príklad gtmin
    Funkcia vráti prvé také číslo, ktoré sa nachádza na ľubovoľnej úrovni v zozname a je väčšie ako zadané číslo a zároveň najmenšie zo všetkých takýchto čísel.
    Zadanie Ako začať Riešenie

  6. Príklad prvep
    Funkcia vráti prvé párne číslo nachádzajúce sa v zadanom zozname na ľubovoľnej úrovni.
    Zadanie Ako začať Riešenie

Iné

  1. Príklad inc
    Funkcia, ktorá pripočíta ku každému číselnému atómu na ľubovoľnej úrovni zoznamu číslo 1.
    Zadanie Ako začať Riešenie

  2. Príklad zrusz
    Funkcia, ktorá zo zadaného zoznamu vytvorí zoznam s odstránenými všetkými vnútornými zátvorkami.
    Zadanie Ako začať Riešenie

  3. Príklad obrat
    Obrátenie zoznamu na všetkých úrovniach.
    Zadanie Ako začať Riešenie

  4. Príklad cisla
    Vráti zoznam pozostávajúci zo všetkých číselných prvkov zadaného s-výrazu (na všetkých úrovniach).
    Zadanie Ako začať Riešenie

  5. Príklad atomy
    Funkcia, ktorá pre zoznam nájde množinu atómov, ktoré sa v ňom vyskytujú (množina = postupnosť atómov bez opakovania).
    Zadanie Ako začať Riešenie

  6. Príklad interval
    Funkcia, ktorá vráti čísla zadaného zoznamu nachádzajúce sa na ľubovoľnej úrovni, ktoré sú menšie ako daná dolná hranica a väčšie ako daná horná hranica.
    Zadanie Ako začať Riešenie

  7. Príklad odstran
    Funkcia vráti zoznam, ktorý vznikne odstránením všetkých výskytov zadaného prvku na ľubovoľnej úrovni.
    Zadanie Ako začať Riešenie

  8. Príklad zmen
    Funkcia vráti zoznam, ktorý vznikne zámenou všetkých výskytov prvku1 za prvok2 v zadanom zozname na ľubovoľnej úrovni.
    Zadanie Ako začať Riešenie

  9. Príklad num2S
    Funkcia, ktorá všetky numerické atómy nahradí atómom 'NUM na všetkých úrovniach v danom zozname.
    Zadanie Ako začať Riešenie

  10. Príklad num2N
    Funkcia, ktorá všetky nenumerické atómy nahradí číslom 0 na všetkých úrovniach v danom zozname.
    Zadanie Ako začať Riešenie

  11. Príklad prehod
    Výmena prvkov v zozname po dvojiciach na všetkých úrovniach.
    Zadanie Ako začať Riešenie

  12. Príklad oznacc
    Funkcia, ktorá dostane na vstup zoznam čísiel. Výstupom je zoznam, ktorý obsahuje jednotky práve na pozíciách, kde sa vo vstupnom zozname na ľubovoľnej úrovni nachádza číslo. Na ostatných pozíciách sú nuly.
    Zadanie Ako začať Riešenie

  13. Príklad dvojice
    Funkcia, ktorá vráti zoznam, kde na ľubovoľnej úrovni ponechá iba prvé dva prvky vnorených zoznamov (neplatí pre najvyššiu úroveň, kde sa počet prvkov nezmení).
    Zadanie Ako začať Riešenie

  14. Príklad sucet
    Funkcia, ktorá spočíta všetky čísla v zadanom zozname na ľubovoľnej úrovni.
    Zadanie Ako začať Riešenie

  15. Príklad ARIT
    Funkcia, ktorá vyhodnotí aritmetický výraz zapísaný v infixe (ARIT '(2 + (3 * 4))) -> 14 (použite funkcionál FUNCALL).
    Zadanie Ako začať Riešenie

Prolog

Na najvyššej úrovni

Schéma Zobraz

  1. Príklad druha_mocnina
    Predikát druha_mocnina(Zaklad, Mocnina) sa splní, ak prvky zoznamu Mocnina sú druhou mocninou prvkov zoznamu Zaklad.
    Zadanie Ako začať Riešenie

  2. Príklad preklad
    Predikát preklad(?Zoz1, Zoz2) sa splní, ak prvky zoznamu Zoz1 sú čísla a prvky zoznamu Zoz2 sú mená čísiel.
    Zadanie Ako začať Riešenie

  3. Príklad porovnaj_vektory
    Predikát porovnaj_vektory(+Vektor1, +Vektor2) sa splní, ak vektor Vektor1(reprezentovaný prvkami zoznamu) je menší ako vektor Vektor2.
    Zadanie Ako začať Riešenie

  4. Príklad sucin
    Predikát sucin(+Vektor, +Cislo, ?Vysledok) sa splní, ak vektor Vysledok je súčinom vektora Vektor a skalára Cislo.
    Zadanie Ako začať Riešenie

Schéma Filter

  1. Príklad del_nuly
    Predikát del_nuly(+Zoz1, ?Zoz2) sa splní, ak zoznam Zoz2 obsahuje všetky prvky zoznamu Zoz1 okrem prvku 0.
    Zadanie Ako začať Riešenie

  2. Príklad delete
    Predikát delete(+Prvok, +Zoznam, ?Vysledok) sa splní, ak zoznam Vysledok obsahuje všetky prvky zoznamu Zoznam bez výskytov prvého argumentu.
    Zadanie Ako začať Riešenie

Schéma Hľadaj

  1. Príklad member
    Predikát member(+X, +List) sa splní, ak X je prvkom zoznamu List.
    Zadanie Ako začať Riešenie

Schéma Redukcia

  1. Príklad suma
    Predikát suma(+List, ?Suma) sa splní, ak Suma je súčtom prvkov zoznamu List.
    Zadanie Ako začať Riešenie

  2. Príklad max
    Predikát max(+X, +List) sa splní, ak X je maximálnym prvkom zoznamu List.
    Zadanie Ako začať Riešenie

  3. Príklad min
    Predikát min(+X, +List) sa splní, ak X je minimálnym prvkom zoznamu List.
    Zadanie Ako začať Riešenie

  4. Príklad card
    Predikát card(+Zoz, ?N) sa splní, ak zoznam ZozN prvkov.
    Zadanie Ako začať Riešenie

Množiny

  1. Príklad Prienik
    Predikát prienik(+Mn1, +Mn2, +Vysledok) sa splní, ak zoznam Vysledok zodpovedá prieniku množín Mn1 a Mn2.
    Zadanie Ako začať Riešenie

  2. Príklad Zjednotenie
    Predikát zjednot(+Mn1, +Mn2, +Vysledok) sa splní, ak zoznam Vysledok zodpovedá zjednoteniu množín Mn1 a Mn2.
    Zadanie Ako začať Riešenie

  3. Príklad Rozdiel
    Predikát rozdiel(+Mn1, +Mn2, +Vysledok) sa splní, ak zoznam Vysledok zodpovedá rozdielu množín Mn1 a Mn2.
    Zadanie Ako začať Riešenie

  4. Príklad Podmnožina
    Predikát podmn(+Mn1, +Mn2) sa splní, ak množina Mn1 je podmnožinou množiny Mn2.
    Zadanie Ako začať Riešenie

Triedenie

  1. Príklad bubble
    Predikát bubble(+Zoz1, ?Zoz2) sa splní, ak Zoz2 vznikne zo zoznamu čísel Zoz1 tak, že sa jedným prechodom od začiatku zoznamu Zoz1 postupne vymieňajú každé dva vedľa seba stojace prvky, ktoré nie sú usporiadané vzostupne a ak sa takto vzniknutý zoznam nepodobá na pôvodý zoznam.
    Zadanie Ako začať Riešenie

  2. Príklad bubble_sort
    Predikát bubble_sort(+Zoz1, ?Zoz2) sa splní, ak Zoz2 bude obsahovať čísla z číselného zoznamu Zoz1, usporiadané vzostupne. Úlohu riešte použitím algoritmu bubble sort.
    Zadanie Ako začať Riešenie

  3. Príklad merge
    Predikát merge(+Zoz1, +Zoz2, ?Zoz3) sa splní, ak Zoz3 bude obsahovať čísla zo vzostupne usporiadaných zoznamov čísel (Zoz1, Zoz2), usporiadané tiež vzostupne.
    Zadanie Ako začať Riešenie

  4. Príklad merge_sort
    Predikát merge_sort(+Zoz1, ?Zoz2) sa splní, ak Zoz2 bude obsahovať čísla z číselného zoznamu Zoz1, usporiadané vzostupne. Úlohu riešte použitím algoritmu merge sort.
    Zadanie Ako začať Riešenie

  5. Príklad pivot
    Predikát pivot(+Zoz1, ?P) sa splní, ak P bude maximum z prvých dvoch rôznych čísel z číselného zoznamu Zoz1. Ak zoznam Zoz1 obsahuje len rovnaké čísla, alebo obsahuje menej ako dve čísla, predikát sa nesplní.
    Zadanie Ako začať Riešenie

  6. Príklad split
    Predikát split(+Zoz1, ?Zoz2, ?Zoz3, +P) sa splní, ak Zoz2 bude obsahovať čísla zo zoznamu čísel Zoz1 menšie ako P, zoznam Zoz3 bude obsahovať čísla zo zoznamu čísel Zoz1 väčšie rovné P a poradie prvkov vo výsledných zoznamoch zostane zachované (ako v Zoz1).
    Zadanie Ako začať Riešenie

  7. Príklad quick_sort
    Predikát quick_sort(+Zoz1, ?Zoz2) sa splní, ak Zoz2 bude obsahovať čísla z číselného zoznamu Zoz1, usporiadané vzostupne. Úlohu riešte použitím algoritmu quick sort.
    Zadanie Ako začať Riešenie

Iné

  1. Príklad nepar
    Predikát nepar(+Zoz) sa splní, ak zoznam Zoz obsahuje nepárny počet prvkov.
    Zadanie Ako začať Riešenie

  2. Príklad par
    Predikát par(+Zoz) sa splní, ak zoznam Zoz obsahuje párny počet prvkov.
    Zadanie Ako začať Riešenie

  3. Príklad vloz
    Predikát vloz(+Zoz1, +Zoz2, ?Vysledok) sa splní, ak zoznam Vysledok zodpovedá zlúčeniu dvoch usporiadaných zoznamov čísiel Zoz1 a Zoz2, pričom prvky sa nesmú opakovať.
    Zadanie Ako začať Riešenie

  4. Príklad outside
    Predikát outside(+M, +Zoz) sa splní, ak M nie je prvkom zoznamu Zoz.
    Zadanie Ako začať Riešenie

  5. Príklad dupl
    Predikát dupl(+Zoz) sa splní, ak zoznam Zoz obsahuje duplikáty.
    Zadanie Ako začať Riešenie

  6. Príklad viaz
    Predikát viaz(+Zoz) sa splní, ak zoznam Zoz neobsahuje voľné premenné.
    Zadanie Ako začať Riešenie

  7. Príklad predposl
    Predikát predposl(+Zoz, ?Prvok) sa splní, ak Prvok je predposledný prvok zoznamu Zoz.
    Zadanie Ako začať Riešenie

  8. Príklad opakuj
    Predikát opakuj(+Prvok, +Pocet, ?Vysledok) sa splní, ak sa v zozname Vysledok opakuje Prvok Pocet krát.
    Zadanie Ako začať Riešenie

  9. Príklad bez_posl
    Predikát bez_posl(+Zoz, ?Vysledok) sa splní, ak zoznam Vysledok zodpovedá zoznamu Zoz bez posledného prvku.
    Zadanie Ako začať Riešenie

  10. Príklad bez_tri
    Predikát bez_tri(+Zoz, ?Vysledok) sa splní, ak zoznam Vysledok zodpovedá zoznamu Zoz bez posledných troch prvkov.
    Zadanie Ako začať Riešenie

  11. Príklad postfix
    Predikát postfix(?Zoz, ?Prvok, ?Vysledok) sa splní, ak zoznam Vysledok zodpovedá zoznamu Zoz s na koniec pripojeným Prvkom.
    Zadanie Ako začať Riešenie

  12. Príklad prvych_k
    Predikát prvych_k(+Zoz, +K, ?Vysledok) sa splní, ak zoznam Vysledok zodpovedá zoznamu prvých K prvkov zo Zoz.
    Zadanie Ako začať Riešenie

  13. Príklad novy
    Predikát novy(+Zoz, ?Vysledok) sa splní, ak zoznam Vysledok zodpovedá zoznamu Zoz bez prvého a posledného prvku.
    Zadanie Ako začať Riešenie

  14. Príklad vloz
    Predikát vloz(+Zoz, +Cislo, ?Vysledok) sa splní, ak zoznam Vysledok zodpovedá vloženiu Cisla do usporiadaneho zoznamu čísiel Zoz zachovajúc usporiadanie.
    Zadanie Ako začať Riešenie

  15. Príklad parne
    Predikát parne(+Zoz, ?Parne) sa splní, ak zoznam Parne obsahuje prvky na párnych miestach zoznamu Zoz (tj. druhý, štvrtý, ...).
    Zadanie Ako začať Riešenie

  16. Príklad hist
    Predikát hist(+Zoz)vypíše histogram podľa zadaného zoznamu čísiel Zoz.
    Zadanie Ako začať Riešenie

  17. Príklad vypis
    Predikát vypis(+Zoz)vypíše zo zoznamu zoznamov Zoz každý zoznam na samostatnom riadku.
    Zadanie Ako začať Riešenie

  18. Príklad sucet
    Predikát sucet(+N, +M, ?Sucet) sa splní, ak číslo Sucet zodpovedá súčtu čísiel od N po M.
    Zadanie Ako začať Riešenie

  19. Príklad vymen
    Predikát vymen(+Zoz, ?Vysledok) sa splní, ak zoznam Vysledok zodpovedá zoznamu Zoz s vymenením prvým a posledným prvkom.
    Zadanie Ako začať Riešenie

  20. Príklad strieda
    Predikát strieda(+Zoz1, +Zoz2, +Vysledok) sa splní, ak zoznam Vysledok pozostáva striedavo z prvkov zoznamov rovnakej dĺžky Zoz1 a Zoz2.
    Zadanie Ako začať Riešenie

  21. Príklad atomy
    Predikát atomy(+Zoz) sa splní, ak zoznam Zoz sa na najvyššej úrovni skladá len z atómov.
    Zadanie Ako začať Riešenie

  22. Príklad rotl
    Predikát rotl(?Zoz1, ?Zoz2) sa splní, ak zoznam Zoz2 vznikne posunutím prvkov zoznamu Zoz1 doľava a posledný prvok zoznamu Zoz2 bude rovný prvému prvku zoznamu Zoz1. Aspoň jeden zo zoznamov je zadaný.
    Zadanie Ako začať Riešenie

  23. Príklad rotp
    Predikát rotp(?Zoz1, ?Zoz2) sa splní, ak zoznam Zoz2 vznikne posunutím prvkov zoznamu Zoz1 doprava a prvý prvok zoznamu Zoz2 bude rovný poslednému prvku zoznamu Zoz1. Aspoň jeden zo zoznamov je zadaný.
    Zadanie Ako začať Riešenie

  24. Príklad rev
    Predikát rev(?Zoz1, ?Zoz2) sa splní, ak zoznam Zoz2 vznikne obrátením zoznamu Zoz1. Aspoň jeden zo zoznamov je zadaný.
    Zadanie Ako začať Riešenie

Na ľubovolnej úrovni

Schéma Zobraz

  1. Príklad druha_mocnina
    Predikát druha_mocnina(Zaklad, Mocnina) sa splní, ak prvky zoznamu Mocnina sú druhou mocninou prvkov zoznamu Zaklad.
    Predikát naprogramujte tak, aby fungoval pre prvky zoznamu na ľubovoľnej úrovni.
    Zadanie Ako začať Riešenie

  2. Príklad preklad
    Predikát preklad(?Zoz1, Zoz2) sa splní, ak prvky zoznamu Zoz1 sú čísla a prvky zoznamu Zoz2 sú mená čísiel.
    Predikát naprogramujte tak, aby fungoval pre prvky zoznamu na ľubovoľnej úrovni.
    Zadanie Ako začať Riešenie

  3. Príklad porovnaj
    Predikát porovnaj(+Zoz1, +Zoz2) sa splní, ak prvky zoznamu Zoz1 sú menšie ako k nim prislúchajúce prvky zoznamu Zoz2.
    Predikát naprogramujte tak, aby fungoval pre prvky zoznamu na ľubovoľnej úrovni.
    Zadanie Ako začať Riešenie

  4. Príklad sucin
    Predikát sucin(+Zoz, +Cislo, ?Vysledok) sa splní, ak prvky zoznamu Vysledok sú súčinom prislúchajúcich prvkov zoznamu Zoz a skalára Cislo.
    Predikát naprogramujte tak, aby fungoval pre prvky zoznamu na ľubovoľnej úrovni.
    Zadanie Ako začať Riešenie

Schéma Filter

  1. Príklad del_nuly
    Predikát del_nuly(+Zoz1, ?Zoz2) sa splní, ak zoznam Zoz2 obsahuje všetky prvky zoznamu Zoz1 okrem prvku 0.
    Predikát naprogramujte tak, aby fungoval pre prvky zoznamu na ľubovoľnej úrovni.
    Zadanie Ako začať Riešenie

  2. Príklad delete
    Predikát delete(+Prvok, +Zoznam, ?Vysledok) sa splní, ak zoznam Vysledok obsahuje všetky prvky zoznamu Zoznam bez výskytov prvého argumentu.
    Predikát naprogramujte tak, aby fungoval pre prvky zoznamu na ľubovoľnej úrovni.
    Zadanie Ako začať Riešenie

Schéma Hľadaj

  1. Príklad member
    Predikát member(+X, +List) sa splní, ak X je prvkom zoznamu List.
    Predikát naprogramujte tak, aby fungoval pre prvky zoznamu na ľubovoľnej úrovni.
    Zadanie Ako začať Riešenie

Schéma Redukcia

  1. Príklad suma
    Predikát suma(+List, ?Suma) sa splní, ak Suma je súčtom prvkov zoznamu List.
    Predikát naprogramujte tak, aby fungoval pre prvky zoznamu na ľubovoľnej úrovni.
    Zadanie Ako začať Riešenie

  2. Príklad max
    Predikát max(+List, ?M) sa splní, ak X je maximálnym prvkom zoznamu List.
    Predikát naprogramujte tak, aby fungoval pre prvky zoznamu na ľubovoľnej úrovni.
    Zadanie Ako začať Riešenie

  3. Príklad min
    Predikát min(+List, ?M) sa splní, ak X je minimálnym prvkom zoznamu List.
    Predikát naprogramujte tak, aby fungoval pre prvky zoznamu na ľubovoľnej úrovni.
    Zadanie Ako začať Riešenie

  4. Príklad card
    Predikát cisla(+Zoz, ?N) sa splní, ak zoznam Zoz obsahuje N prvkov na najnižšej úrovni vnorenia.

    Zadanie Ako začať Riešenie

Iné

  1. Príklad maxh
    Predikát maxh(+Zoz, ?X) sa splní, ak X zodpovedá maximálnej hĺbke vnorenia zoznamu Zoz.
    Zadanie Ako začať Riešenie

  2. Príklad maxs
    Predikát maxs(+Zoz, ?X) sa splní, ak X zodpovedá dĺžke najdlhšieho zoznamu, ktorý sa nachádza na ľubovoľnej úrovni vnorenia zoznamu Zoz.
    Zadanie Ako začať Riešenie