Generatory K ontek stg enerow ani a K ontek stg enerow ani a E w al
Transkrypt
Generatory K ontek stg enerow ani a K ontek stg enerow ani a E w al
Generatory K ontek 1 ) 2 s t g it eracj a wzgl ę ) ewal u d enerow em ciągu ani a wyników acj a s t erowana cel em Wyrażenie może zwracać ciąg wyników ! A f ind u { p ( t o( s 1 , s 2 c, ) s { 2 , 7 , 1 5 d ) } ciąg p zmienna u ciąg 1 s t y - > generat or j ako argu niep owod - > wyrażenie s t aj e s ię ment p roced 1 ) u ev ery wyr1 ev ery wyr1 d o wyr2 ev ery i: = ev ery writ e ( f ind ev ery writ e ( & zenie el ement owy generat or w wyrażeniu . } ry - > p f ind ( s 1 , s 2 ) ontek 1 ) 2 s t g it eracj a wzgl ę ) ewal u d roced u ra s t aj e s ię f eat u res d . C 2 ( i : = ani a E W u ( s 1 d , s 2 f ind 1 os t arczenie co naj mniej ) > 1 , s 2 < f ind 0 1 wyniku u 0 ( s 1 ery writ e ( yraż A w al u ac reak i nex t j a arg u m entó w wyników ) writ e ( ev ) acj a s t erowana cel em el em j es t f ind ) generat orem u A ) generat orem enerow em ciągu o writ e( i) , s 2 można s t os ować b K d ( s 1 p t o( ‘ ‘ , wiers z1 p t o( ‘ ‘ , wiers z2 ) ‘ , wiers z1 ) p t o( writ e( ‘ ) ) 1 > 1 ( s 1 , s 2 < f ind 0 0 ev ) ) t yl ko j ed ( s 1 eni a g , s 2 ) u p t o( ery writ e( | : = op p roced 1 end p t o( wiers z1 t o( ‘ ‘ , { ) ‘ 2 ‘ , = , 5 , , 1 0 2 u 0 t o( ) ‘ = ‘ , u } } wiers z2 p wiers z1 1 ) wiers z2 p t o( ‘ ‘ , ) ) - > wiers z2 ) ) - > { { 2 2 , } 1 0 } en wynik eneratorow wyr2 a | . . . p u { - > e C i ą g i l i c b y k z b c ał k ow i tyc h i t o j f p u i t o j wyr1 : = ‘ , = - > ) l t ernat ywa x ‘ ) : = { 1 , 2 , 3 } { 1 , 3 b en( s 1 u , s 2 ) ( re main( | arg[ 1 ] s t op ( ” B | arg ) rak p read ( ) ) l iku ” ) , 5 } 0 t o 1 0 b y 2 - > ev ery writ e( 2 ^ ev ery writ e( 0 t o 9 ev ery a: = ev ery i: = ev ery writ e( 1 wyr1 t o * ( 0 t o 1 , 0 t o 9 t o wyr2 l is t a d l is t a[ 1 0 d ) { 0 2 , 4 , 6 , 8 , 1 0 } ) o wyr o writ e( t o * , ) l is t a] l is t a[ i] ) ) 1 O g rani c j : = ev z eni e g enerow ani a P ow if f ind ( s 1 , s 2 ) d o ( j + : = 1 ) > 3 t h en b | reak wyr \ n ery writ e( f ind ( s 1 Generow ! s ! s , s 2 ) \ 3 j e el ement y od p ! s ) wyp ery ! l is t a : = f : = P op ierws zego d is u rekord ev entó en( s 1 , s 2 0 zeru | | 1 ) ery writ e( ( 0 t o 2 ery writ e( | ( 0 t o 9 ev ery writ e( | read w ( ) W o os t at niego ) ery writ e( ery writ e( ev ev ) ) \ 1 3 - > { 1 , 1 , 1 - > { 0 , 1 , 2 , , 0 . . . , } 1 , 2 , . . . } ) ) ) ani e el em generu writ e( ev a wyr ev writ e( i) } ev al na al ternatyw 0 ery i: = { ev tarz u j e el ement y ł ań , t ab el i, zb cu ch a, l is t y, ioru j e el ement y l is t y yk ł ad Procedura jako generator S O Ś kracani e w dw y racal ne p l edz eni e p 4 raż eń rz y p rogram i s ani e u ) ery writ e( !f ) roc ed u ra j ak o g enerator procedure cp(a) c := 2 while a>1 do if a%c=0 then {a/:=c; suspend c} else c+:=1 fail end every write(cp(120)) write(4<cp(120)) {2,2,2,3,5} {5} Generac j a el em entó w c i ą g u procedure fib() suspend (i:=1)|(j:=1) repeat { suspend k:=i+j i:=j j:=k } end every write(fib()\20) {1,1,2,3,5,...} 2 Generac j a s ł ó w C procedure gen_slowo() while wiersz:=read() do { i:=1 while j:=upto(&lcase,wiersz,i) do { i:=many(&lcase,wiersz,j) suspend wiersz[i:j] } } end u renc yj ny Z as tos G enerat or s t os u • it eracj ą • ewal u w1 + ( 1 ev ) + ery ( i: = j e na g raf ac roced p roced u B A C B D re nod B es zn: = cs et ( graf ) s u end end s p E C D D E wh il e i< ( graf ) } i+ = * graf [ i] = s u ” re nas t 1 if ” A u i: = ( 1 1 t o 3 eneracj a s ł ów: Z ad z one {1,2,3,...} : = s p 2 end graf = nod d e) c” ap e t h 1 en ] { 2 2 | | + ( j : = ! & 1 , 3 , 4 , 3 , 4 t o n) ^ l cas e | | ! ” x 2 w egenerowanym) , 5 = } ( k: = 1 t o n) ^ 2 d o writ e( i, ” ” , j , ” ” , k) yz” is ać generat or generu k p rac op roced o { graf [ i+ eneratoró anie: S nod ani a g ) t o n) ^ h ( graf , ow generat orem ( czas ami zd ( f : = : = c j emy wraz z: G N g oń w2 t o 2 ! ” ab p k acj ą s t erowaną cel em Ws zys t ko j es t {” ”,”a”,”b”,”c”,”aa”,”ab”, ... } erac ni es every i:=nat()\20 do p(i) gwiazdka(’abc’) p i procedure nat() i:=0 suspend |(i+:=1) end procedure gwiazdka( znaki ) suspend ” ”|(gwiazdka(znaki)||!znaki) end O g every (i:=1)|(|(i+:=1)) t:=table(0) every t[gen_slowo()]+:=1 Generator rek i ą en( ” d u j ący nies koń ani e w ane. t x t ” ) ) czony ciąg l iczb yraż | s t op ( ” B ” d ef au l t . t x rak p l iku p ierws zych . eń ” ) re main( arg) f n : = arg[ 1 ] | f n : = f n : = arg[ 1 ] | ” d ob l icz( w1 ) | ob ob l icz( w1 | w2 ) f ind ( s , l ine) f ind ( s | rev | ef au l icz( w2 f ind ( rev l t . t x t ” t ” ) ers e( s ) , l ine) ers e( s ) , l ine) ! zn ob ( ob l icz1 l icz1 ( w) | ob | ob l icz2 l icz2 ( w) ) ( w) 3 O d w rac al ne p rz yp i s Nawracanie danych (data b x < - x P track ing j ) > k k - > y rob l em 8 h etm anó w c . d . rob &t r a c e &t r a c e eni e p rog ram u P rob l em q 0 ś l e d z e n i e n i e j e s t w y k o n y w a n ( 1 8 ) p W c e &t r a c e y r o p > 0 = - 1 i s y c e d w u w a r a y ś l e p n , e a s ą r g d : u i s u z e n a z w n m j e e n k i e m c i ą a t y o i p l i k z w u g n i k a t y ś l e d z ą n i e j s z a o r a , n c a n u e m w e r a w i e r t o r s z a ś c i , w y w o ł a n ) , q ( 2 l is t ( 1 anó ) 1 1 3 1 3 2 1 4 1 3 3 1 1 1 8 1 4 6 2 4 1 4 7 2 1 5 ) , ) q ( 2 w ) , w+ k- 1 + w- k 8 yni k q ( 3 i ) 7 8 2 6 4 1 ) , 0 5 3 1 , 0 6 3 . . . 5 ) - ( 1 4 . . . 5 w q 5 5 l is t ( 1 , 0 7 4 8 5 2 i s p v e l ac p l a y o ( i , f ) z i o i n f o a j e o p m r m w i a ( 1 y w o c j e ) p o ł a o i d z i o m n roc e i a n p r o t y a f i k c h c e a w ed d t o u r y r a s t e u ( m c h c z d rac i o a i n i c h p = w l i k 1 a u f h ) r t o ś c i a ( &e r r o c h u t ) 1 d i s p l a d i s p l a y ( &l e d i s p l a y ( 0 n c t i o ł e u etm : = ( 1 I nf orm d z m w . . . u i p l is t ( 8 w : = 1 e c e anó q n &t r a h 8 &l e = etm d procedure place(r,c) static row, up, dw initial {row:=list(8,0);up:=list(15,0);dw:=list(15,0)} if row[r]=dw[r+c-1]=up[8+r-c]=0 then suspend row[r]<-dw[r+c-1]<-up[8+r-c]<-r end z h procedure q() suspend place(1 to 8,c) end l ed 8 row : = procedure main() every write(q(1),q(2),q(3),q(4),q(5),q(6),q(7),q(8)) end Ś l em ) - j ) > < ack P y (i: = (i< ani e y ( 1 ) t y v e l ) w ) l k o p s z y t y l k r o o s t k i d c e i e d e p n u o t y r a z i o f i k a a k m y t o r y t y w g n l o a b a l n e f u n a . . . f u n ( ) g e n e r u j e n a z w y w b u d o w a n y c h k c j i 4