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