Úvod
Lisp
Syntaktické vzory rekurzie
Programovacie schémy
Na najvyššej úrovni
Predikáty
- Príklad testatom
Test, či sa zoznam skladá len z
atómov na najvyššej úrovni.
- Príklad parny-pocet
Test, či má zoznam párny počet
prvkov (nepoužívať funkciu LENGTH).
- Príklad neparny-pocet
Test, či má zoznam nepárny
počet prvkov (nepoužívať funkciu LENGTH).
- Príklad hladaj1
Predikát na hľadanie aspoň
jedného z dvoch zadaných prvkov na najvyššej úrovni v
zozname.
- Príklad hladaj2
Predikát na hľadanie dvoch
zadaných prvkov na najvyššej úrovni v zozname (musia sa
vyskytovať oba súčasne).
- Príklad testcislo
Test, či daný zoznam obsahuje
iba čísla, na najvyššej úrovni.
- 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.
- Príklad trojice
Test, či zadaný zoznam
reprezentuje postupnosť trojíc čísel ((1 2 4)(5 2 7)....)
(nepoužívajte funkciu LENGTH).
- 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.
Počet
- Príklad spocitaj-cisla
Funkcia, ktorá vráti počet
tých prvkov zoznamu, ktoré sú číslami na najvyššej úrovni
v zozname.
- Príklad spocitaj-atomy
Vráti počet atómov v zadanom
zozname na najvyššej úrovni.
- 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.
- Príklad vratmaxzoz
Funkcia vráti počet prvkov
najdlhšieho podzoznamu zadaného zoznamu na najvyššej úrovni.
- 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.
Prvok zoznamu
- Príklad min
Minimálny prvok postupnosti
čísel.
- Príklad max
Maximálny prvok postupnosti
čísel.
- Príklad predposledny
Funkcia, ktorá vráti predposledný
prvok zoznamu.
- 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).
- 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.
- 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.
- Príklad my-get
Napíšte vlastnú verziu funkcie
GET (MY-GET). Použite funkciu SYMBOL-PLIST.
Pole
- 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.
- 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.
- 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).
- 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.
- 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.
Tabuľka
- 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.
- 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.
- Príklad kluce
Funkcia vráti zoznam (k1 k2
...kn), ktorý vytvorí zo zadaného zoznamu ((k1 h1)(k2
h2)....(kn hn)).
- 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.
Množina
- 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).
- 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).
- Príklad zluc
Zlúči dve usporiadané
postupnosti čísel do usporiadanej postupnosti, pričom nie je
povolený viacnásobný výskyt prvkov.
- Príklad zrusmin
Funkcia zruší z neusporiadanej
postupnosti čísel minimum a vráti novú postupnosť.
- Príklad zrusmax
Funkcia zruší z neusporiadanej
postupnosti čísel maximum a vráti novú postupnosť.
Filter
- 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.
- Príklad except
Všetky prvky zoznamu okrem
posledného prvku.
- Príklad zrusn
Zruší n-tý prvok zoznamu.
- Príklad firstk
Prvých K prvkov zoznamu.
- Príklad restk
Posledných K prvkov zoznamu.
- Príklad bezk
Funkcia, ktorá vynechá prvých K
prvkov zoznamu.
- Príklad postmn
Postupnosť M-tého až N-tého
prvku zadaného zoznamu.
- Príklad stred
Nový zoznam bez prvého a
posledného prvku.
- Príklad pozp
Zoznam párnych výskytov prvkov
(t.j. vráti druhý, štvrtý,... prvok zo zadaného zoznamu).
- Príklad pozn
Zoznam nepárnych výskytov prvkov
(t.j. vráti prvý, tretí,... prvok zo zadaného zoznamu).
- 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.
- 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.
- 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.
Zobrazenie
- 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.
- Príklad num2S
Funkcia, ktorá všetky numerické
atómy nahradí atómom 'NUM na najvyššej úrovni v zozname.
- Príklad num2N
Funkcia, ktorá všetky
nenumerické atómy nahradí číslom 0 na najvyššej úrovni v
zozname.
- Príklad prehod
Výmena prvkov v zozname po
dvojiciach na najvyššej úrovni.
- 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.
- Príklad nasobz
Funkcia, ktorá vytvorí zoznam
čísel vynásobením vždy zodpovedajúcich prvkov dvoch
vstupných zoznamov.
- Príklad sucetz
Funkcia, ktorá vytvorí zoznam
čísel sčítaním vždy zodpovedajúcich prvkov dvoch
vstupných zoznamov.
- 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..
- Príklad usporiadajv
Funkcia vráti vzostupne
usporiadaný vstupný zoznam čísel.
- Príklad usporiadajz
Funkcia vráti zostupne
usporiadaný vstupný zoznam čísel.
- Príklad vymenfl
Funkcia, ktorá vymení prvý
prvok zoznamu s posledným.
- Príklad rotp
Funkcia, ktorá rotuje prvky
zoznamu vpravo.
- Príklad rotl
Funkcia, ktorá rotuje prvky
zoznamu vľavo.
Iné
- Príklad poz0
Funkcia, ktorá indikuje miesto
výskytu prvej nuly v zozname, ak sa nula v zozname nenachádza
vráti NIL.
- Príklad pozk
Pozícia daného kľúča v
zozname ((k1 . b1)...(kn . bn)).
- 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).
- Príklad sucin
Definujte funkciu násobenia dvoch
čísiel, ktorá vystačí s funkciami + a SUB1.
- Príklad sucetnm
Funkcia, ktorá vráti súčet
všetkých čísel od N po M.
- Príklad sum
Výpočet súčtu štvorcov
rozdielov jednotlivých prvkov dvoch zadaných postupností.
- Príklad matica
Funkcia, ktorá vypíše na
obrazovku maticu znakov '*', rozmery matice sa zadajú na vstupe.
- Príklad pripoj
Pripojí prvok na koniec zoznamu.
- Príklad vlozza
Pridá daný s-výraz za n-tý
prvok zoznamu.
- Príklad vloz
Vloží do usporiadanej
postupnosti čísel zadané číslo tak, aby ostalo zachované
usporiadanie.
- Príklad zrus
Funkcia vráti zoznam, ktorý
vznikne odstránením všetkých výskytov zadaného prvku na
najvyššej úrovni.
- Príklad zdvoj
Vytvorenie zoznamu zdvojením
každého prvku pôvodného zoznamu na najvyššej úrovni v
zozname.
- 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).
- Príklad transponuj
Vráti transponovanú maticu, t.j.
riadky sú stĺpce a stĺpce sú riadky.
- 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.
Na ľubovolnej úrovni
Predikáty
- Príklad some
Predikát na hľadanie aspoň
jedného z dvoch zadaných prvkov na ľubovoľnej úrovni v
zozname.
- Príklad both
Predikát na hľadanie dvoch
zadaných prvkov na ľubovoľnej úrovni v zozname (musia sa
vyskytovať oba súčasne).
- Príklad everynum
Test, či daný zoznam obsahuje na
najnižšej úrovni iba čísla.
- Príklad everyat
Test, či daný zoznam obsahuje na
najnižšej úrovni iba symboly (nenumerické atómy).
- Príklad notnep
Test, či sa v zozname nenachádza
na ľubovoľnej úrovni žiadne nepárne číslo.
Počet
- Príklad pocetc
Funkcia, ktorá vráti počet
tých prvkov zoznamu, ktoré sú číslami na ľubovoľnej
úrovni v zozname.
- Príklad poceta
Vráti počet atómov v zadanom
zozname na ľubovoľnej úrovni.
- 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.
- Príklad maxzoz
Funkcia vráti počet prvkov
najdlhšieho podzoznamu zadaného zoznamu na ľubovoľnej
úrovni.
- 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.
- 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.
Prvok zoznamu
- Príklad maxc
Maximálny prvok zoznamu
(číslo); uvažujú sa čísla na všetkých úrovniach v
zozname.
- Príklad minc
Minimálny prvok zoznamu
(číslo); uvažujú sa čísla na všetkých úrovniach v
zozname.
- Príklad maxpc
Maximálne párne číslo, pričom
sa uvažujú atómy na všetkých úrovniach v zozname.
- 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.
- 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.
- Príklad prvep
Funkcia vráti prvé párne
číslo nachádzajúce sa v zadanom zozname na ľubovoľnej
úrovni.
Iné
- Príklad inc
Funkcia, ktorá pripočíta ku
každému číselnému atómu na ľubovoľnej úrovni zoznamu
číslo 1.
- Príklad zrusz
Funkcia, ktorá zo zadaného
zoznamu vytvorí zoznam s odstránenými všetkými vnútornými
zátvorkami.
- Príklad obrat
Obrátenie zoznamu na všetkých
úrovniach.
- 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).
- 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).
- 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.
- Príklad odstran
Funkcia vráti zoznam, ktorý
vznikne odstránením všetkých výskytov zadaného prvku na
ľubovoľnej úrovni.
- 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.
- Príklad num2S
Funkcia, ktorá všetky numerické
atómy nahradí atómom 'NUM na všetkých úrovniach v danom
zozname.
- Príklad num2N
Funkcia, ktorá všetky
nenumerické atómy nahradí číslom 0 na všetkých úrovniach
v danom zozname.
- Príklad prehod
Výmena prvkov v zozname po
dvojiciach na všetkých úrovniach.
- 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.
- 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í).
- Príklad sucet
Funkcia, ktorá spočíta všetky
čísla v zadanom zozname na ľubovoľnej úrovni.
- Príklad ARIT
Funkcia, ktorá vyhodnotí
aritmetický výraz zapísaný v infixe (ARIT '(2 + (3 * 4)))
-> 14 (použite funkcionál FUNCALL).
Prolog
Na najvyššej úrovni
Schéma Zobraz
- Príklad druha_mocnina
Predikát druha_mocnina(Zaklad, Mocnina) sa splní, ak
prvky zoznamu Mocnina sú druhou mocninou prvkov zoznamu Zaklad.
- Príklad preklad
Predikát preklad(?Zoz1, Zoz2) sa splní, ak
prvky zoznamu Zoz1 sú čísla a prvky zoznamu Zoz2 sú mená čísiel.
- Príklad porovnaj_vektory
Predikát porovnaj_vektory(+Vektor1, +Vektor2) sa splní, ak
vektor Vektor1(reprezentovaný prvkami zoznamu) je menší ako vektor Vektor2.
- Príklad sucin
Predikát sucin(+Vektor, +Cislo, ?Vysledok) sa splní, ak
vektor Vysledok je súčinom vektora Vektor a skalára Cislo.
Schéma Filter
- Príklad del_nuly
Predikát del_nuly(+Zoz1, ?Zoz2) sa splní, ak
zoznam Zoz2 obsahuje všetky prvky zoznamu Zoz1 okrem prvku 0.
- 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.
Schéma Hľadaj
- Príklad member
Predikát member(+X, +List) sa splní, ak
X je prvkom zoznamu List.
Schéma Redukcia
- Príklad suma
Predikát suma(+List, ?Suma) sa splní, ak
Suma je súčtom prvkov zoznamu List.
- Príklad max
Predikát max(+X, +List) sa splní, ak
X je maximálnym prvkom zoznamu List.
- Príklad min
Predikát min(+X, +List) sa splní, ak
X je minimálnym prvkom zoznamu List.
- Príklad card
Predikát card(+Zoz, ?N) sa splní, ak zoznam Zoz má N prvkov.
Množiny
- Príklad Prienik
Predikát prienik(+Mn1, +Mn2, +Vysledok) sa splní, ak zoznam Vysledok zodpovedá prieniku množín Mn1 a Mn2.
- Príklad Zjednotenie
Predikát zjednot(+Mn1, +Mn2, +Vysledok) sa splní,
ak zoznam Vysledok zodpovedá zjednoteniu množín Mn1 a Mn2.
- Príklad Rozdiel
Predikát rozdiel(+Mn1, +Mn2, +Vysledok) sa splní, ak
zoznam Vysledok zodpovedá rozdielu množín Mn1 a Mn2.
- Príklad Podmnožina
Predikát podmn(+Mn1, +Mn2) sa splní, ak
množina Mn1 je podmnožinou množiny Mn2.
Triedenie
- 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.
- 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.
- 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.
- 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.
- 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í.
- 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).
- 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.
Iné
- Príklad nepar
Predikát nepar(+Zoz) sa splní, ak zoznam Zoz obsahuje nepárny počet prvkov.
- Príklad par
Predikát par(+Zoz) sa splní, ak zoznam Zoz obsahuje párny počet prvkov.
- 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ť.
- Príklad outside
Predikát outside(+M, +Zoz) sa splní, ak M nie je prvkom zoznamu Zoz.
- Príklad dupl
Predikát dupl(+Zoz) sa splní, ak zoznam Zoz obsahuje duplikáty.
- Príklad viaz
Predikát viaz(+Zoz) sa splní, ak zoznam Zoz neobsahuje voľné premenné.
- Príklad predposl
Predikát predposl(+Zoz, ?Prvok) sa splní, ak Prvok je predposledný prvok zoznamu Zoz.
- Príklad opakuj
Predikát opakuj(+Prvok, +Pocet, ?Vysledok) sa splní, ak sa v zozname Vysledok opakuje Prvok Pocet krát.
- Príklad bez_posl
Predikát bez_posl(+Zoz, ?Vysledok) sa splní, ak zoznam Vysledok zodpovedá zoznamu Zoz bez posledného prvku.
- Príklad bez_tri
Predikát bez_tri(+Zoz, ?Vysledok) sa splní, ak zoznam Vysledok zodpovedá zoznamu Zoz bez posledných troch prvkov.
- Príklad postfix
Predikát postfix(?Zoz, ?Prvok, ?Vysledok) sa splní, ak zoznam Vysledok zodpovedá zoznamu Zoz s na koniec pripojeným Prvkom.
- Príklad prvych_k
Predikát prvych_k(+Zoz, +K, ?Vysledok) sa splní, ak zoznam Vysledok zodpovedá zoznamu prvých K prvkov zo Zoz.
- Príklad novy
Predikát novy(+Zoz, ?Vysledok) sa splní, ak zoznam Vysledok zodpovedá zoznamu Zoz bez prvého a posledného prvku.
- 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.
- Príklad parne
Predikát parne(+Zoz, ?Parne) sa splní, ak zoznam Parne obsahuje prvky na párnych miestach zoznamu Zoz (tj. druhý, štvrtý, ...).
- Príklad hist
Predikát hist(+Zoz)vypíše histogram podľa zadaného zoznamu čísiel Zoz.
- Príklad vypis
Predikát vypis(+Zoz)vypíše zo zoznamu zoznamov Zoz každý zoznam na samostatnom riadku.
- Príklad sucet
Predikát sucet(+N, +M, ?Sucet) sa splní, ak číslo Sucet zodpovedá súčtu čísiel od N po M.
- 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.
- 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.
- Príklad atomy
Predikát atomy(+Zoz) sa splní, ak zoznam Zoz sa na najvyššej úrovni skladá len z atómov.
- 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ý.
- 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ý.
- 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ý.
Na ľubovolnej úrovni
Schéma Zobraz
- 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.
- 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.
- 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.
- 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.
Schéma Filter
- 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.
- 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.
Schéma Hľadaj
- 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.
Schéma Redukcia
- 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.
- 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.
- 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.
- Príklad card
Predikát cisla(+Zoz, ?N) sa splní, ak zoznam Zoz obsahuje N prvkov na najnižšej úrovni vnorenia.
Iné
- Príklad maxh
Predikát maxh(+Zoz, ?X) sa splní, ak X zodpovedá maximálnej hĺbke vnorenia zoznamu Zoz.
- 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.