A következő kártyakeverő programban a megjelölt helyen 4 különböző
programrész állhat:
FOR I:=1 TO 32 DO LAP[I]:=I
FOR I:=1 TO 32 DO BEGIN
(**)
KIRAJZOL(J)
END |
A négy beilleszthető rész a következő:
(*1*)
J:=VÉLETLEN(32); |
(*3*)
K:=VÉLETLEN(32);
J:=LAP[K];
LAP[K]:=LAP[I];
LAP[I]:=J |
(*2*)
REPEAT
J:=VÉLETLEN(32)
UNTIL LAP[J]>0;
LAP[J]:=0; |
(*4*)
K:=VÉLETLEN(33-I)+I-1;
J:=LAP[K];
LAP[K]:=LAP[I];
LAP[I]:=J; |
A program egy 32 lapból álló, megkevert pakli lapjait rajzolja ki. Az
egyes kártyalapokat az 1, 2, ..., 32 számok képviselik, a KIRAJZOL eljárás
egy lapot rajzol ki a képernyőre, a VÉLETLEN(SZÁM) függvény pedig egy 0-nál
nagyobb és SZÁM-nál nem nagyobb véletlen egész számot állít elő. Szabályosnak
akkor számít a keverés, ha minden lap egyszer és csak egyszer fordul
elő, mégpedig bármelyik helyen azonos eséllyel.
A:
Melyik algoritmus kever szabályosan és melyik nem?
B:
A szabálytalanul keverő változatokról írd le, hogy mit csinálnak!
C:
Tudsz-e valamit mondani arról, hogy a (*2*) változat a FOR-ciklus
magjának egy-egy végrehajtása során hányszor hívja meg a VÉLETLEN() függvényt?
Számítógéppel titkosítottak egy értelmes magyar SZÓ-t. A program
lefutása után közölték velünk az előállított KÓD-ot, de a használt KULCS-ot
nem. A kódoláskor használt algoritmus a következő volt:
Kódolás:
KÓD(0):=KULCS
Ciklus I=1-től HOSSZ-ig
KÓD(I):=SZÓ(I) művelet KÓD(I-1)
Ciklus vége
Eljárás vége. |
Az 1-től HOSSZ-ig indexelt SZÓ tömb a kódolandó, a 0-tól HOSSZ-ig indexelt
KÓD tömb pedig a kódolt szót tartalmazza.
A KÓD (1-től HOSSZ-ig) ez lett: CJNKL. Az alábbi igazságtáblával megadott
műveletet a számítógép az operandusokon bitenként végzi el (A és B az operandusok,
C az eredmény).
Művelet:
A |
0 |
1 |
0 |
1 |
B |
0 |
0 |
1 |
1 |
C |
0 |
1 |
1 |
0 |
A használható betűk és kódjaik:
- |
0000 |
A |
0001 |
B |
0010 |
C |
0011 |
D |
0100 |
E |
0101 |
F |
0110 |
G |
0111 |
H |
1000 |
I |
1001 |
J |
1010 |
K |
1011 |
L |
1100 |
M |
1101 |
N |
1110 |
O |
1111 |
Mi volt az eredeti, értelmes magyar szó (megjegyzés: az első betű kitalálásához
az algoritmus nem ad segítséget), és mi volt a KULCS?
Magyarázd meg, hogyan jöttél rá a megoldásra!