Commit b2412aed authored by Maroš Hliboký's avatar Maroš Hliboký
Browse files

after exeam

parent e1dbe781
Showing with 130 additions and 0 deletions
+130 -0
......@@ -265,6 +265,8 @@
- npr: `(reduce #'+ '(1 2 3 4 5 6 7 8 9) :start 5)` -> 30
- **:end** - koncova pozicia
- npr: `(reduce #'+ '(1 2 3 4 5 6 7 8 9))` -> 45
- **:key** - operacna funcia
- npr: `(reduce #'+ '(1 2 3 4 5 6 7 8 9) :key #'(lambda (x) (* 10 x) ))` -> 450 [kazdy prvok prv vynasobim 10 a potom scitam zoznam]
## Mapovanie zoznamu
......
;;;; OWN WORK
(defun gparne (podm size)
(remove-if podm (reverse (maplist #'length (make-list size)))))
;;;; Poznamka:
;;;; Nasledujuce priklady je mozne riesit pomocou pouzitia
;;;; funkcii vyssieho radu (bez nutnosti explicitneho pouzitia
;;;; rekurzie alebo iteracie)
;;;;
;;;; Alternativne riesenie je pouzit rekurziu alebo iteraciu
;;;; bez nutnosti pouzitia funkcii vyssieho radu
;;; Generovanie postupnosti
;;;
;;; (postupnost 5) -> (1 2 3 4 5)
;;;
;;; Napoveda: v rieseni nepouzivajte rekurziu ani iteraciu
;;;
;;; Alternativa: - generujte rad 1/1,1/2,...
;;; - generujte rad c^(n-1),c^(n-2),...,c^1,c^0
;;; - generujte postupnost (min, min+1, ..., max-1, max)
(defun postupnost (dlzka)
(reverse (maplist #'length (make-list dlzka))))
;;; Vypocet hodnoty polynomu
;;;
;;; (polynom 2 '(1 3 0 2)) -> 22
;;;
;;; Napoveda: riesenie zalozte na pouziti 'reduce'
(defun polynom (num nasobky)
(reduce #'+ (mapcar #'* (mapcar #'expt (make-list (length nasobky) :initial-element num) (maplist #'(lambda (x) (1- (length x))) (make-list (length nasobky)))) nasobky)))
;;; Zadany lubovolny pocet mnozin - najst prvky ktore su v kazdej mnozine
;;;
;;; (op-intersection '((1 2 3 5) (2 3 4) (3 4 5 6))) -> (3)
;;;
;;; Napoveda: v rieseni nepouzivajte rekurziu ani iteraciu
;;;
;;; Alternativa: - najst prvky, ktore su iba v jednej z mnozin
;;; - najst prvky, ktore su aspon v jednej z mnozin
;;; Je zadany zoznam bodov na ploche (reprezentovanych dvojprvkovymi
;;; zoznamami). Najdite ten bod, ktory je najdalej od pociatku.
;;;
;;; (bod-najdalej '((3 4)(1 2)(6 2)(4 2))) -> (6 2)
;;;
;;; Napoveda: riesenie zalozte na pouziti 'reduce'
;;; Urcenie hodnoty cisla z cifier pri zadanej ciselnej baze
;;;
;;; (hodnota 10 '(2 0 1 1)) -> 2011
;;;
;;; Napoveda: v rieseni pouzivajte 'mapcar'
;;; - pre mocnenie pouzite (expt 2 3) -> 8
;;; Pre standardnu 'sudoku' plochu (9 riadkov, 9 stlpcov,
;;; 9 stvorcov 3x3) generujte vsetky policka z ktorych
;;; pozostava n-ty riadok (cislovanie zacina od 0)
;;;
;;; (op-riadok 3) -> ((3 0)(3 1)(3 2)(3 3)(3 4)(3 5)(3 6)(3 7)(3 8))
;;;
;;; Napoveda: riesenie zalozte na 'mapcar'
;;;
;;; Alternativa: policka stvorca x,y
;;; (op-stvorec 0 0) ->
;;; ((0 0)(0 1)(0 2)(1 0)(1 1)(1 2)(2 0)(2 1)(2 2))
;;; Zo zoznamu navzajom roznych cisel odstrante tie cisla ktore kazia
;;; vzostupne usporiadanie zoznamu
;;;
;;; (urob-vzostup '(2 7 6 4 8 5 9)) -> (2 4 5 9)
;;;
;;; Napoveda: riesenie zalozte na pouziti 'remove-if'
;;; - na ziskanie zvysku zoznamu zacinajuceho nejakym
;;; cislom pouzite member
;;;
;;; Alternativa: riesenie zalozte na 'remove-if-not'
;;; Rozklad cisla na sucinitele, ak cislo pozostava z navzajom roznych
;;; sucinitelov
;;;
;;; (rozklad 210) -> (2 3 5 7)
;;;
;;;
;;; Napoveda: v rieseni nepouzivajte rekurziu ani iteraciu
;;; - pre kontrolu delitelnosti pouzite (mod 5 3) -> 2
;;; Zadane su dve mnoziny a (ne)rovnost - kontrola ci plati (ne)rovnost
;;;
;;; (kontrola '(1 2 3 4 5) '(3 4 5 6 7) #'>) -> nil
;;; (kontrola '(4 5) '(3 4) #'>) -> t
;;;
;;; Napoveda: riesenie zalozte na pouziti 'some' a 'every'
;;; Zadane dve mnoziny a (ne)rovnost - opravy aby platila (ne)rovnost
;;;
;;; (oprava '(1 2 3 4 5) '(3 4 5 6 7) #'>) -> (4 5) (3 4)
;;; (oprava '(1 2 3 4 5) '(3 4 5 6 7) #'=) -> (3 4 5) (3 4 5)
;;;
;;; Napoveda: riesenie zalozte na pouziti funkcii vyssieho radu
;;; Vytvarajte vsetky rozne dvojice
;;;
;;; (dvojice '(a b c) '(1 2)) -> ((a 1) (a 2) (b 1) (b 2) (c 1) (c 2))
;;;
;;; Napoveda: riesenie zalozte na pouziti 'mapcar'
;;; Vytvarajte vsetky rozne kombinacie z prvkov zadaneho zoznamu
;;;
;;; (kombinacie '(a b c)) -> ((a b c) (a b) (a c) (a) (b c) (b) (c) nil)
;;; (kombinacie '()) -> (nil)
;;;
;;; Napoveda: riesenie zalozte na sucasnom pouziti 'mapcar' a rekurzie
;;; - pre odhalenie rekurzivneho pravidla porovnajte vystup
;;; pre zoznam (a b c) a zoznam (b c)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment