Príklady z LISPu
Číslo pred príkladom označuje úroveň obtiažnosti (1, 2, 3).
PREDIKÁTY
---------
1 Test, či sa zoznam skladá len z atómov na najvyššej úrovni
1 Test, či má zoznam párny počet prvkov (nepoužívať funkciu
LENGTH)
1 Test, či má zoznam nepárny počet prvkov (nepoužívať funkciu
LENGTH)
1 Predikát na hľadanie aspoň jedného z dvoch zadaných prvkov na
najvyššej úrovni v zozname
1 Predikát na hľadanie dvoch zadaných prvkov na najvyššej
úrovni v zozname (musia sa vyskytovať oba súčasne)
1 Test, či daný zoznam obsahuje iba čísla, na najvyššej úrovni
1 Predikát (POROVNAJ zoznam význačný-prvok) na zistenie
zhodnosti častí zoznamu naľavo a napravo od význačného-prvku
1 Test či zadaný zoznam reprezentuje postupnosť trojíc čísel
((1 2 4)(5 2 7)....) (nepoužívajte funkciu LENGTH)
1 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
-----
1 Funkcia, ktorá vráti počet tých prvkov zoznamu, ktoré sú
číslami na najvyššej úrovni v zozname
1 Vráti počet atómov v zadanom zozname na najvyššej úrovni
1 Funkcia (POCITAJ-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
1 Funkcia vráti počet prvkov najdlhšieho podzoznamu zadaného
zoznamu na najvyššej úrovni
1 Funkcia vráti počet prvkov zoznamu čísel, ktoré sú menšie ako
daná dolná hranica a väčšie ako daná horná hranica
PRVOK ZOZNAMU
-------------
1 Minimálny prvok postupnosti čísel
1 Maximálny prvok postupnosti čísel
1 Predposledný prvok
1 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)
1 Funkcia vráti taký prvok postupnosti čísel, ktorý je menší
ako zadané číslo a zároveň najväčší zo všetkých takýchto
čísel
1 Funkcia vráti taký prvok postupnosti čísel, ktorý je väčší
ako zadané číslo a zároveň najmenší zo všetkých takýchto
čísel
1 Napíšte vlastnú verziu funkcie GET (MY-GET). Použite funkciu
SYMBOL-PLIST
POLE
----
1 Pozícia daného prvku v poli, ktoré sa reprezentuje
postupnosťou postupností, kde jednotlivé prvky na najvyššej
úrovni predstavujú riadky poľa
1 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
1 Funkcia, ktorá vráti rozmer zadaného dvojrozmerného pola
(x y). Pole sa reprezentuje zoznamom, ktorého prvky sú
zoznamy (riadky pola)
TABUĽKA
-------
1 Nech S je postupnosť 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
1 Test, či sa v zozname tvaru ((a1 . b1)(a2 . b2)...(an . bn))
nachádza na mieste ľavej časti niektorej bodka dvojice zadaný
prvok
MNOŽINA
-------
1 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
INÉ
---
1 Funkcia, ktorá indikuje miesto výskytu prvej nuly v zozname,
ak sa nula v zozname nenachádza vráti NIL
1 Pozícia daného kľúča v zozname ((k1 . b1)...(kn . bn))
1 Definujte funkciu pre sčítanie čísiel, ak predpokladáme, že
náš funkcionálny jazyk pozná iba funkcie ADD1 (inkrementácia)
a SUB1 (dekrementácia)
1 Definujte funkciu násobenia dvoch čísiel, ktorá vystačí
s funkciami + a SUB1
1 Funkcia, ktorá vráti súčet všetkých čísel od N po M
1 Výpočet súčtu štvorcov rozdielov jednotlivých prvkov dvoch
zadaných postupností
1 Funkcia, ktorá vypíše na obrazovku maticu znakov '*', rozmery
matice sa zadajú na vstupe
POLE
----
2 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
2 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
-------
2 Funkcia vráti zoznam (k1 k2 ...kn), ktorý vytvorí zo zadaného
zoznamu ((k1 h1)(k2 h2)....(kn hn))
2 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
-------
2 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)
2 Zlúči dve usporiadané postupnosti čísel do usporiadanej
postupnosti, pričom nie je povolený viacnásobný výskyt prvkov
2 Funkcia zruší z neusporiadanej postupnosti čísel minimum
a vráti novú postupnosť
2 Funkcia zruší z neusporiadanej postupnosti čísel maximum
a vráti novú postupnosť
INÉ
---
2 Funkcia, ktorá vráti prvky zadaného zoznamu čísel, ktoré sú
menšie ako daná dolná hranica a väčšie ako daná horná hranica
2 Všetky prvky zoznamu okrem posledného prvku
2 Pripojí prvok na koniec zoznamu
2 Pridá daný s-výraz za n-tý prvok zoznamu
2 Zruší n-tý prvok zoznamu
2 Prvých K prvkov zoznamu
2 Posledných K prvkov zoznamu
2 Funkcia, ktorá vynechá prvých K prvkov zoznamu
2 Postupnosť M-tého až N-tého prvku zadaného zoznamu
2 Nový zoznam bez prvého a posledného prvku
2 Vloží do usporiadanej postupnosti čísel zadané číslo tak, aby
ostalo zachované usporiadanie
2 Zoznam párnych výskytov prvkov (t.j. vržáti druhý, štvrtý,...
prvok zo zadaného zoznamu)
2 Zoznam nepárnych výskytov prvkov (t.j. vráti prvý, tretí,...
prvok zo zadaného zoznamu)
2 Funkcia vráti zoznam, ktorý vznikne odstránením všetkých
výskytov zadaného prvku na najvyššej úrovni
2 Funkcia vráti zoznam, ktorý vznikne zámenou všetkých výskytov
prvku1 za prvok2 v zadanom zozname na najvyššej úrovni
2 Funkcia (PRAVA-STRANA zoznam vyznacny-prvok), ktorá vráti
nový zoznam, pozostávajúci z časti vstupného zoznamu vpravo
od vyznacneho-prvku
2 Funkcia (LAVA-STRANA zoznam vyznacny-prvok), ktorá vráti
nový zoznam, pozostávajúci z časti vstupného zoznamu vľavo
od vyznacneho-prvku
2 Funkcia, ktorá všetky numerické atómy nahradí atómom 'NUM na
najvyššej úrovni v zozname
2 Funkcia, ktorá všetky nenumerické atómy nahradí číslom 0 na
najvyššej úrovni v zozname
2 Výmena prvkov v zozname po dvojiciach na najvyššej úrovni
2 Vytvorenie zoznamu zdvojením každého prvku pôvodného
zoznamu na najvyššej úrovni v zozname
2 Funkcia, ktorá vráti zoznam čísel, ktoré sa vytvorii ako
súčin postupne každého prvku zadaného zoznamu čísel a daného
čísla
2 Funkcia, ktorá vytvorí zoznam čísel vynásobením vždy
zodpovedajúcich prvkov dvoch vstupných zoznamov
2 Funkcia, ktorá vytvorí zoznam čísel sčítaním vždy
zodpovedajúcich prvkov dvoch vstupných zoznamov
2 Funkcia, ktorá dostane na vstup číslo a zoznam čísiel.
Výstupom je zoznam, ktorý obsahuje jednotky práve na
pozíciach, kde sa vo vstupnom zozname na najvyššej úrovni
nachádza číslo rovnaké ako prvý argument. Na ostatných
pozíciach sú nuly.
2 Funkcia vráti vzostupne usporiadaný vstupný zoznam čísel
2 Funkcia vráti zostupne usporiadaný vstupný zoznam čísel
2 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
2 Funkcia, ktorá vymení prvý prvok zoznamu s posledným
2 Funkcia, ktorá rotuje prvky zoznamu vpravo
2 Funkcia, ktorá rotuje prvky zoznamu vľavo
2 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)
2 Vráti transponovanú maticu, t.j. riadky sú st’pce a st’pce sú
riadky
2 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 parametorv)
PREDIKÁTY
---------
3 Predikát na hľadanie aspoň jedného z dvoch zadaných prvkov na
ľubovoľnej úrovni v zozname
3 Predikát na hľadanie dvoch zadaných prvkov na ľubovoľnej
úrovni v zozname (musia sa vyskytovať oba súčasne)
3 Test, či daný zoznam obsahuje na najnižšej úrovni iba čísla
3 Test, či daný zoznam obsahuje na najnižšej úrovni iba symboly
(nenumerické atómy)
3 Test, či sa v zozname nenachádza na ľubovoľnej úrovni žiadne
nepárne číslo
POČET
-----
3 Funkcia, ktorá vráti počet tých prvkov zoznamu, ktoré sú
číslami na ľubovoľnej úrovni v zozname
3 Vráti počet atómov v zadanom zozname na ľubovoľnej úrovni
3 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
3 Funkcia vráti počet prvkov najdlhšieho podzoznamu zadaného
zoznamu na ľubovoľnej úrovni
3 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
3 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
-------------
3 Minimálny prvok zoznamu (číslo); uvažujú sa čísla na všetkých
úrovniach v zozname
3 Maximálny prvok zoznamu (číslo); uvažujú sa čísla na všetkých
úrovniach v zozname
3 Maximálne párne číslo, pričom sa uvažujú atómy na všetkých
úrovniach v zozname
3 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
3 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
3 Funkcia vráti prvé párne číslo nachádzajúce sa v zadanom
zozname na ľubovoľnej úrovni
INÉ
---
3 Funkcia, ktorá pripočíta ku každému číselnému atómu na
ľubovoľnej úrovni zoznamu číslo 1
3 Funkcia, ktorá zo zadaného zoznamu vytvorí zoznam
s odstránenými všetkými vnútornými zátvorkami
3 Obrátenie zoznamu na všetkých úrovniach
3 Vráti zoznam pozostávajúci zo všetkých čiselných prvkov
zadaného s-výrazu (na všetkých úrovniach)
3 Funkcia, ktorá pre zoznam nájde množinu atómov, ktoré sa
v ňom vyskytujú (množina = postupnosť atómov bez opakovania)
3 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
3 Funkcia vráti zoznam, ktorý vznikne odstránením všetkých
výskytov zadaného prvku na ľubovoľnej úrovni
3 Funkcia vráti zoznam, ktorý vznikne zámenou všetkých výskytov
prvku1 za prvok2 v zadanom zozname na ľubovoľnej úrovni
3 Funkcia, ktorá všetky numerické atómy nahradí atómom 'NUM na
všetkých úrovniach v danom zozname
3 Funkcia, ktorá všetky nenumerické atómy nahradí číslom 0 na
všetkých úrovniach v danom zozname
3 Výmena prvkov v zozname po dvojiciach na všetkých úrovniach
3 Funkcia, ktorá dostane na vstup číslo a zoznam čísiel.
Výstupom je zoznam, ktorý obsahuje jednotky práve na
pozíciach, kde sa vo vstupnom zozname na ľubovoľnej úrovni
nachádza číslo rovnaké ako prvý argument. Na ostatných
pozíciach sú nuly.
3 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í)
3 Funkcia, ktorá spočíta všetky čísla v zadanom zozname na
ľubovoľnej úrovni
3 Funkcia, ktorá vyhodnotí aritmetický výraz zapísaný v infixe
(ARIT '(2 + (3 * 4))) -> 14 (použite funkcionál FUNCALL)
|
to Homepage |
|
to Teaching |
|
to FLP |
|
to the Top |
|
|
|
|