Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Maroš Hliboký
TUKE-JIS
Commits
b2412aed
Commit
b2412aed
authored
4 years ago
by
Maroš Hliboký
Browse files
Options
Download
Email Patches
Plain Diff
after exeam
parent
e1dbe781
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
README.md
+2
-0
README.md
tutorials/train_ho.lisp
+128
-0
tutorials/train_ho.lisp
with
130 additions
and
0 deletions
+130
-0
README.md
View file @
b2412aed
...
...
@@ -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
...
...
This diff is collapsed.
Click to expand it.
tutorials/train_ho.lisp
0 → 100644
View file @
b2412aed
;;;; 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)
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help