Warning: Declaration of action_plugin_subjectindex_indexer::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php on line 15

Warning: Declaration of action_plugin_mathjax_enable::register(Doku_Event_Handler &$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/mathjax/action/enable.php on line 62

Warning: Declaration of action_plugin_googleanalytics::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/googleanalytics/action.php on line 40

Warning: Declaration of action_plugin_folded::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/folded/action.php on line 40

Warning: Declaration of action_plugin_hidden::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/hidden/action.php on line 28

Warning: Declaration of action_plugin_include::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/include/action.php on line 354

Warning: Declaration of action_plugin_tag::register(&$contr) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/tag/action.php on line 175

Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php:15) in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/auth.php on line 532

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/auth.php on line 818

Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php:15) in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/actions.php on line 656

Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php:15) in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/actions.php on line 656

Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php:15) in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/actions.php on line 656
======C7R.scm====== #!/usr/bin/env racket #lang racket/base zadání (slepá mapa) viz [[C7.scm]], 2014-jan-17 (honz4) ======1. abs-min====== V [[PAPR1:L7#s7_3|sekci 7.3]] jsme rozšířili proceduru min2 na proceduru libovolného počtu argumentů. Stejným způsobem rozšiřte proceduru na výběr čísla s extrémní absolutní hodnotou abs-min. (define +oo '+oo) y=oo || (x!=oo && x <= y) ;Ceckovy zapis <= s nekonecnem (define <=oo (lambda (x y) (or (equal? y +oo) (and (not (equal? x +oo)) (<= x y))))) (map <=oo '(1 2 3 1 +oo +oo) '(2 1 3 +oo 1 +oo)) ;zabudujeme +oo i do abs? (define (abs+oo x) (if (equal? x +oo) x (abs x))) (define abs-min2 ;abs zabudovano v <=oo ??? (lambda (x y) (if (<=oo (abs+oo x) (abs+oo y)) x y))) ;vracime 'originalni' x y (define abs-min2__ (lambda (x y) (if (<=oo x y) x y))) (abs-min2 -10 8) ;=> 8 (define abs-min (lambda numbers (foldr abs-min2 +oo numbers))) (abs-min -10 -8 2 5 6) ;=> 2 ======2. nondecreasing====== Napište predikát, který pro posloupnost zjistí, zda je neklesající. Posloupnost bude reprezentovaná seznamem, jehož prvky jsou čísla. Viz příklady aplikace: (nondecreasing? '()) ;⇒ #t (nondecreasing? '(1 2 3 4)) ;⇒ #t (nondecreasing? '(1 2 4 3)) ;⇒ #f (nondecreasing? '(1 4 2 3)) ;⇒ #f (nondecreasing? '(4 1 2 3)) ;⇒ #f (define nondecr1 (lambda (l) (car (foldl (lambda (e t) (cons (and (car t) (>= e (cdr t))) e)) '(#t . -999999) ;lepe: >= s -infinity? l)))) (nondecr1 '(1 2 3 4)) (nondecr1 '(1 2 4 3)) (nondecr1 '(1 2 4 3 5)) (nondecr1 '(1 2 4 4 5)) TODO: reimplementovat: terminator staruje #f, pak si pamatuje predchozi, nebo nastavi #t ======3. after, before====== Napište procedury after a before, jejichž argumenty budou element elem a seznam l . Procedura after bude vracet seznam prvku za posledním výskytem prvku elem (včetně) v seznamu l. Procedura before zase seznam prvků před prvním výskytem prvku elem (včetně) v seznamu l. Viz příklady použití: (after 10 '(1 2 3 4 3 5 6)) ;⇒ () (after 3 '(1 2 3 4 3 5 6)) ;⇒ (3 5 6) (after 6 '(1 2 3 4 3 5 6)) ;⇒ (6) (before 10 '(1 2 3 4 3 5 6)) ;⇒ (1 2 3 4 5 6) (before 1 '(1 2 3 4 3 5 6)) ;⇒ (1) (before 3 '(1 2 3 4 3 5 6)) ;⇒ (1 2 3) (define (after x l) ;za poslednim => po prvni od konce vcetne (let ((result (foldr (lambda (e t) ;(display t) (newline) (if (car t) t ;uz nasli, vracime porad to stejne (cons (equal? e x) (cons e (cdr t))))) '(#f . ()) l))) (if (car result) (cdr result) '()))) (after 10 '(1 2 3 10 14 15)) (define (before x l) (let ((result (foldl (lambda (e t) ;(display t) (newline) (if (car t) t ;uz nasli, vracime porad to stejne (cons (equal? e x) (cons e (cdr t))))) '(#f . ()) l))) (if (car result) (reverse (cdr result)) '()))) (before 10 '(1 2 3 10 14 15))