KOMPLEX FELADATOK Válogatott témák – válogatott megoldások
F 3.4
Kódolás és kódfejtés Komplex feladatok 4. feladatcsomag Életkor:
13–18 év
Fogalmak, eljárások:
• a számírás kialakulása és a számok szerepe a hétköznapi életben (csak hivatkozás) • helyi érték szerinti számírás • egyértelmű és kölcsönösen egyértelmű hozzárendelések, függvények • táblázatok, adatok táblázatba foglalása és kiolvasása • számrendszerek (elsősorban a 2-es és 10es számrendszerek), átváltás a különböző számrendszerek között • variáció, ismétléses variáció (érintőlegesen) • hatványozás, alapok, kitevők • prímtényezős felbontás, a prímszámok fogalma, a prímhatvány értelmezése (alapok, kitevők) • a prímszámok elhelyezkedése és számossága a pozitív egészek között • a számelmélet alaptétele • oszthatósági tulajdonságok (csak hivatkozás)
A feladatcsomag kódolással kapcsolatos kérdéseket vet fel: hogyan helyettesíthető egy szöveg számokkal, illetve mit lehet később ezekkel a számokkal kezdeni? A tanulók (tanári irányítás mellett) különböző ötletekkel állhatnak elő, ezzel fejleszthető a problémamegoldó gondolkodásuk, kapcsolatot találnak a hétköznapi élet és a matematika között, miközben bővül az ismeretük a számelmélet fogalmairól, tételeiről. Felelevenedik bennük több, korábban
Fejlesztő matematika (5–12. évf.)
1
KOMPLEX FELADATOK Válogatott témák – válogatott megoldások
F 3.4
tanult matematikai témakör (például alapvető függvénytani ismeretek, egyszerűbb variációk), és a korábbi tananyag újrarendeződik a fejükben. Az egyes ötletek (kódolási eljárások) lehetséges hibáit vizsgálva az önellenőrzés és a hibakeresés is fejlődik, aminek járulékos következménye a tanulók általános igénye későbbi munkájuk ellenőrzésére (például dolgozatok feladatainak megoldásakor). A feladatcsomag lehetőséget biztosít egyéni, páros vagy éppen csoportos fejtörésre, illetve ötleteket is nyújt házi feladatokhoz és otthoni gondolkodásra. Az egymásra épülő feladatok jól használhatóak a 15–18 éves korosztálynál, de a mélyebb ismeretet nem igénylő kérdések (a feladatcsomag első felében) alkalmasak a 13–15 éves tanulók számára is. Az érdekes kérdések kellő motivációt nyújtanak a gondolkodás iránti igény kialakulásához.
A feladatok listája 1. Hogyan kódoljunk egy szöveget számokkal? (problémamegoldó képesség, gondolkodás, számfogalom, kreativitás) 2. Kódolás és kódfejtés 1. (szabályalkotás, problémamegoldás, szabálykövetés, számfogalom) 3. Hogyan kódolunk, amikor sms-t írunk? (szabályfelismerés, megfigyelés, szabályalkotás) 4. Kódolás és kódfejtés 2. (gyakorlati alkalmazás, szabályalkotás, szabálykövetés) 5. Javítható még az előző kód? (szabályfelismerés, tanult ismeretek mozgósítása, megfigyelés, fantázia)
2
Fejlesztő matematika (5–12. évf.)
KOMPLEX FELADATOK Válogatott témák – válogatott megoldások
F 3.4
6. Hogyan segíthet a 2-es számrendszer? (szabályalkotás, tanult ismeretek mozgósítása, kombinatorikai készségek, kombinatorikus gondolkodás, számfogalom) 7. Kódoljunk a 2-es számrendszerrel! (gyakorlati alkalmazás, szabálykövetés, tanult ismeretek mozgósítása)
Módszertani tanácsok A feladatokat célszerű egymás után végezni, lehetőleg köztes feladat kihagyása nélkül. Kihagyásra akkor sem érdemes sort keríteni, ha a bevezető feladat során egy-egy tanulói ötlet megválaszol egy későbbi feladatot. A kísérletezés és a tapasztalás minden diáknak fontos, ez különösen a hibakeresés miatt lesz lényeges. A feladatcsomag bárhol megszakítható, amennyiben a tanulók (életkor vagy kellő mennyiségű előismeret hiánya miatt) már nem tudnának több feladatot megoldani. Fontos szempont, hogy a diákok megéljék a gondolkodás örömét, egy-egy jó ötletük sikerét. Ugyancsak lényeges, hogy a tanári irányítás segítse őket a fejtörés során, de ne kapják készen a megoldást, mert azzal elvész a cél. Ha úgy látjuk, hogy kevés az idő a tanórán, de várhatóak még jó megoldások, akkor adjuk fel a feladatokat „szorgalmi” házi feladatként, később jutalmazva az eredményesen dolgozó diákokat. Minden feladat kiadható önálló, páros és csoportmunkára egyaránt. A munkaforma váltogatásával változatossá tehető a tanóra. Érdemes az egyes feladatok eredményét frontálisan kiértékelni, ahol a tanulók hozzászólhatnak saját eredményeik alapján. Ez különösen a hibakeresésnél és az ellenőrzésnél fontos, így a tanulságok minden diákhoz eljutnak. A csoportos munka elindítása előtt is érdemes frontális irányítással átismételni a fontosabb fogalmakat, módszereket. (De ez nem jelenti azt, hogy készen kapják a megoldást.)
Fejlesztő matematika (5–12. évf.)
3
KOMPLEX FELADATOK Válogatott témák – válogatott megoldások
F 3.4
A feladatok szövege, vagyis a kódolandó tartalom szabadon kicserélhető. Tehát tetszés szerint választhatunk hosszabb vagy rövidebb szöveget, attól függően, mennyi időt szeretnénk egy-egy feladatra szánni. Ugyancsak választható a szöveg témája: van, aki népszerű ifjúsági irodalomból emelne ki részletet, mások egy matematikai anekdotát vagy tréfát választanak. Fontos, hogy ilyen esetben mi magunk is ellenőrizzük, vajon az új szöveget helyesen kódoltuk-e, a feladat szempontjait követve. Érdemes „tartalék” szövegeket is készenlétben tartani. Ez a feladatcsomagban úgy jelenik meg, hogy a tanulói kártyák első feladatát minden diák végrehajtja, a második feladatot (szöveget) pedig azoknak adjuk fel, akik az elsővel végeztek. Mivel a tanulók (néha jelentősen) eltérő tempóban dolgoznak, célszerű a gyorsan végző diákokat azonos típusú, további feladatokkal lekötni. Ilyenkor adjuk ki az első feladatot mindenkinek, a másodikkal pedig azok foglalkozzanak, akik az elsővel végeztek. Látványos eleme lehet a tanórának, ha a feladatcsomag végrehajtása után, a témakörrel való foglalkozás záró mozzanataként bemutatunk egy-egy működő kódolóprogramot. A feladatcsomag végén (melléklet) említett C++ nyelven írt kódolásra, illetve dekódolásra készített alkalmazások letölthetők az internetről. Részletes információk a mellékletben találhatók.
Megoldások, megjegyzések 1. Hogyan kódoljunk egy szöveget számokkal? 1. Ennek a feladatnak nincs igazán rossz megoldása, ugyanakkor számíthatunk arra, hogy felvetik a tanulók a második feladatban megfogalmazott kódolási eljárást. A frontális kiértékelésnél hallgassunk meg minden ötletet, és ha elhangzik olyan gondolat, amivel későbbi feladat foglalkozik, jelezzük, hogy erre még visszatérünk. Megkérdezhetjük,
4
Fejlesztő matematika (5–12. évf.)
KOMPLEX FELADATOK Válogatott témák – válogatott megoldások
F 3.4
kódolt-e már valaki számokkal szöveget, és ha kevés kéz lendül a magasba, kijelenthetjük: szerintünk a csoportban mindenki kódolt már számokkal, sőt, a többség naponta is ezt teszi. (Ez lesz az sms-es feladat.) 2. Ez a kérdés alkalmas szorgalmi házi feladatnak. Érdemes a feladatcsomag végén visszatérni rá, és akkor megválaszolni. A feladatcsomag során többször feltehetjük ezt a kérdést, végül, meghallgatva a tanulók ötletét, elmondhatjuk a megoldást: csak annyi a feladatunk, hogy annyi darab kis négyzetet biztosítsunk a füzetben, amennyi a kódként kapott szám. (Ezért nem érdemes az elején megválaszolni, amikor még nem is kódoltunk.) A kódfejtés során a kis négyzetek számát kell visszafejteni, és olvasható a vers (vagy bármi más). Persze, mielőtt a tanulók így akarják megúszni az irodalom tanulását, azt is hozzátehetjük, hogy egy A/4-es spirálfüzetben megközelítőleg 265 000 kis négyzet található, ami 3 karakter kódolására elég. Annyit pedig könnyebb megtanulni… 2. Kódolás és kódfejtés 1. 1. A megfelelő kód: 2535111253526181450545463553693453161117261253520316 9465331113181753163014205111449 El kell döntenünk, mennyire szigorúan vesszük a sortörési utasítás elmulasztását (a kétszer egymás után szereplő „54”-et). Figyelmesen ellenőrizzünk, mivel ez egy nem kölcsönösen egyértelmű kód, így nehéz visszafejteni. Az ellenőrzést végezhetjük újabb csoportmunkában, úgy, hogy a csoportok egymás megoldásait próbálják megfejteni. Ez átnyúlik a következő feladat megoldásába. Ha csak annyit kódoltatunk, hogy „Sziasztok!”, akkor annak megoldása: 2535111253526181450 2. A szöveg értelmes visszafejtése: Bajban vagyunk! (Ez lehet a tartalék szöveg azoknak, akik gyorsabban dolgoztak.)
Fejlesztő matematika (5–12. évf.)
5
KOMPLEX FELADATOK Válogatott témák – válogatott megoldások
F 3.4
3. Igen, több ilyen kód is létezik. Ilyen szám(ok) keresése feladható szorgalmi házi feladatnak, a különösen jó ötleteket érdemes jutalmazni (mivel a hosszabb megoldások biztosan sok munkát igényelnek). Egy rövid példa: 151816 = ADOM = LOM. A kódtáblázat segítségével bármilyen ötlet ellenőrizhető. 4. A feladathoz nem tartozik tanulói kártya. Az előző feladatból következő helyes megoldás, hogy az egyjegyű számokat (az „A”-tól a „G” betűig tartó szakaszban) cseréljük kétjegyűekre. Egyaránt elfogadható a 01–09-ig átírt alak vagy a 61–69-ig tartó számozás, illetve más, korábban nem használt kétjegyű tartomány: 71–79-ig, 81–89-ig, 91–99-ig. A logikus gondolkodással ellentétes, de elfogadható például a 76–84-ig terjedő skála. Ilyen esetben érdemes utalni rá, hogy a kódtáblázat nehezen megjegyezhető, ha nem kellően logikus. Essen szó az egyértelmű és kölcsönösen egyértelmű hozzárendelésekről, megfelelő életkor és előismeret esetén a függvényekről, a leképezési szabályokról! Vélhetően a tanulók is fel fogják ismerni, hogy az előző feladatban az egyjegyű és kétjegyű számok okozzák a gondot. Részletezzük a helyi érték szerinti számírás jelentőségét, akár matematikatörténeti példákkal (Mezopotámia, Egyiptom). 4. Kódolás és kódfejtés 2. 1. A megoldás: 99614301210151632222130199219401657365520122635331634 174244101832141930132419301812422532101237463524313 Lényeges és várható hiba a nagy kezdőbetűre utasító „99” elhagyása, figyeljünk erre! (Ez már egy működő, kölcsönösen egyértelmű kódolás, így különösen nagy hiba lefelejteni.) 2. A második feladat három részét érdemes külön csoportoknak adni, így azonos idő alatt elkészül mindhárom megoldás, amit rendre felolvasva megkapjuk az első kérdésre a választ.
6
Fejlesztő matematika (5–12. évf.)
KOMPLEX FELADATOK Válogatott témák – válogatott megoldások
F 3.4
a) Semmi sem jobb, mint az örök boldogság. b) Egy tábla csoki jobb, mint semmi sem. c) Tehát egy tábla csoki jobb, mint az örök boldogság. 5. Javítható még az előző kód? Le kell szögeznünk, hogy ez a kód már teljesen jó, javítása csak a kívülállók kizárása érdekében, illetve az egyszerűbb alakra hozás céljával történhet. 1. A kívülállók kizárására egy lehetőség a kód egyéb (nemszám) karakterekkel történő bővítése. Ekkor a szám nem változik, a bővítmények pedig zavarják az illetékteleneket. Például: Szia! = 997494432114 := 9*97a4<94%4!32x1+14. Másik lehetőség a kód újrakódolása egy másik kódtáblázat vagy módszer segítségével. Ennek részleteit az egyszerűbb alakra hozásnál, alább részletezzük. 2. Az egyszerűbb alakra hozás egyik lehetősége a prímtényezős felbontás. Vizsgáljuk a kódként kapott szám oszthatósági tulajdonságait, és végezzünk is el osztásokat. Várható eredmény, hogy egy százjegyű szám osztása hosszú időt vesz igénybe. Ekkora számoknál nehéz eldönteni, hogy az adott szám prím-e vagy sem. Ha igen, a prímtényezős felbontás értelmét veszti. Ha a szám felbomlik prímhatványok szorzatára, akkor egy lehetőség, hogy a szám helyett a prímtényezős felbontás során nyert hatványok kitevőit tároljuk. Például: 3696 = 24 · 3 · 7 · 11 = 24 · 31 · 50 · 71 · 111 := 41011. Ilyenkor figyeljünk arra, hogy az új kód csak akkor lesz egyértelmű, ha a hatványalapokat növekvő sorrendben, állandó helyen vesszük figyelembe, és így számít a nulladik hatvány esete. Azt is meg kell jegyezni, hogy előfordulhatnak többjegyű kitevők is, így a kódolás egyértelműségéhez be kell vezetni valamilyen elválasztó karaktert. (Ez lehet egy nem szám karakter, lásd a következő pontban.) Meggondolandó, hogy a prímek, illetve a nagy hatványalapok szorza-
Fejlesztő matematika (5–12. évf.)
7
KOMPLEX FELADATOK Válogatott témák – válogatott megoldások
F 3.4
taként előálló összetett számok kódja így nem egyszerűbb, hanem bonyolultabb lesz. Például: 29 := 0000000001, mert 29 = 20 · 30 · 50 · … · 291. Felmerülhet ötletként, hogy ha a szöveg végén pont szerepel, akkor 11 lesz az utolsó két számjegy. Viszont ha felcseréljük az 11 és 12 kódokat (tehát az 11 lesz a vessző és az 12 lesz a pont), akkor a szöveg végül 12-re végződik, így biztosan nem prím. Bár az oszthatósági vizsgálatokat nem könnyíti, ettől ugyanúgy százjegyű marad ez a rövid mintaszöveg. Rá lehet térni a számrendszerekre is, bár látható, hogy ez a 10-es számrendszerbeli (amúgy is hosszú) kód csak hoszszabbá válik, ha kisebb alapú számrendszerbe írjuk át. Innen kapcsolódik a következő (utolsó) feladat. 3. Az első kézenfekvő ötlet a fenti, nem-szám karakterekkel történő bővítés, ezzel a 01-ek megtörése (például 01 helyett 0s1). Érdemes rávilágítani, hogy a táblázatban mennyire sok még az üres hely, vagyis a szóköznek adható még például a 47, 54 vagy a 88 is. Ekkor a kódoló tetszőleges esetekben a 01 helyett 88-at ír, de a kódfejtő ezt is szóköznek fordítja. Ezen a ponton kitérhetünk a kölcsönösen egyértelmű hozzárendelések és függvények azon tulajdonságára, hogy egy értéket (itt: szóköz) a függvény több helyen is felvehet (itt: például 01, 47, 88…), de fordítva már sérül a kölcsönös egyértelműség. 6. Hogyan segíthet a 2-es számrendszer? 1. A válasz: 24 = 16. Mind a négy helyi értékre kétféle számjegyet választhatunk, azaz a variációk száma: 2 · 2 · 2 · 2 = 16. 2. A téma továbbra is egy ismétléses variáció, és mivel kétféle számjegyet használhatunk, ezért a megoldás úgy is kereshető, hogy milyen n esetén lesz igaz, hogy 2 n $ 60 . A legkisebb alkalmas 2-hatvány a 64, tehát n = 6, azaz a számnak hatjegyűnek kell lennie. (A 32 még kevés.)
8
Fejlesztő matematika (5–12. évf.)
KOMPLEX FELADATOK Válogatott témák – válogatott megoldások
F 3.4
3. A fenti feladat célja az volt, hogy megtudjuk, hány jegyű legyen az a 2-es számrendszerbeli szám, amelynek összes variációs lehetősége lefedi a körülbelül 60 karaktert. 4. Az eddigiek alapján megállapítottuk, hogy hatjegyű számok szükségesek egy működő kódtáblázat létrehozásához. Itt minden olyan megoldás helyes, amely a karakterekhez különböző hatjegyű számokat rendel (továbbra is csak a 0, 1 karakterek felhasználásával). Egy lehetséges megoldás a következő feladatban közölt táblázat, de más elképzelés is helyes, ha megfelel a fenti követelményeknek. 7. Kódoljunk a 2-es számrendszerrel! 1. A kód, még 2-es számrendszerben írva: 111100000000100001011111001100 Átírva 10-es számrendszerbe: 1006770124 2. A kód, átírva 2-es számrendszerbe: 000100111000101001 Ennek megfejtése a kódtáblázat alapján: jó! (A nagy kezdőbetűnek nem adtunk kódot, mert a számológépek többsége nem győzné a még 6-tal magasabb kitevőjű 2-hatványt. Számítógépen vizsgálhatók hosszabb szövegek, megfelelő formázási utasításokkal.
Fejlesztő matematika (5–12. évf.)
9
KOMPLEX FELADATOK Válogatott témák – válogatott megoldások
Problémamegoldó képesség
F 3.4
1. Hogyan kódoljunk egy szöveget számokkal?
13–18. év
Mielőtt ezt a feladatot kiadjuk, beszélgessünk a számírás kialakulásáról és jelentőségéről. Vessünk fel számírással kapcsolatos kérdéseket, például: miért számokkal jelöljük a tantermeket, a buszvonalakat, a közutakat…, miért nem, mondjuk, színekkel? Próbáljuk gondolkodásra invitálni a diákokat, még mielőtt a konkrét feladatot elindítanánk! Ezután szervezzünk csoportokat (3–5 fős létszámmal), és adjuk feladatnak a címben is szereplő kérdést: 1. Hogyan kódoljunk egy szöveget számokkal? A diákok lapra vagy füzetbe írják ötleteiket, minél többet. A csoportok létszámát (ahogy már elhangzott) szabadon választhatjuk, lehetőségünk van páros vagy önálló munkát is szervezni. Az ötletek összevetése után tegyük fel a következő kérdést: 2. Hogyan olvashatunk fel egy verset egy teljesen üres négyzetrácsos füzetből? Ezt a kérdést ne válaszoljuk meg, hagyjuk a feladatcsomag végére. Bőven elég akkor megvizsgálni, mi a hiba ezzel az ötlettel, addig akár szorgalmi házi feladat is lehet.
10
Fejlesztő matematika (5–12. évf.)
KOMPLEX FELADATOK Szabályalkotás
Válogatott témák – válogatott megoldások
F 3.4
2. Kódolás és kódfejtés 1. Hogyan tudunk kódolni egy szöveget számokkal? Mutatunk egy lehetőséget. Feleltessünk meg minden betűnek és más karakternek (írásjeleknek, formázási utasításoknak) egy-egy számot, az alábbiak szerint: A Á B C D E É F G
1 2 3 4 5 6 7 8 9
Í J K L M N O Ó Ö
12 13 14 15 16 17 18 19 20
Q R S T U Ú Ü Ű V
23 24 25 26 27 28 29 30 31
Y Z 0 1 2 3 4 5 6
34 35 36 37 38 39 40 41 42
9 . , ; ? ! : „ szóköz
45 46 47 48 49 50 51 52 53
H
10
Ő
21
W
32
7
43
sortörés
54
I
11
P
22
X
33
8
44
-
55
1. A kódtáblázat segítségével kódoljuk az alábbi szöveget! Sziasztok! Ez egy mintaszöveg. Vajon működik? 2. Fejtsük meg a következő kódot! 311331175331193427171450 3. Létezik olyan kód, amely két (vagy több) különböző értelmes magyar szövegre is visszafejthető a táblázattal? 4. Hogyan „javítható” a kódtáblázatunk? Fejlesztő matematika (5–12. évf.)
11
13–18. év
KOMPLEX FELADATOK Válogatott témák – válogatott megoldások
Szabályfelismerés
F 3.4
3. Hogyan kódolunk, amikor sms-t írunk?
15–18. év
Amikor megvitattuk az előző feladatokat, továbbra is frontális irányítás mellett beszélgessünk az sms-ezésről mint kódolási eljárásról. Emlékeztessük a tanulókat, hogy mi már a témakörrel való foglalkozás kezdetén biztosak voltunk benne, hogy minden diák kódolt már számokkal betűket. Tehát hogyan is írunk sms-t? Táblán illusztrálva kezdjük el írni a „Szia!” üdvözlést, közben folyamatosan meséljük, mit csinálunk éppen: Az „S” betűt úgy kapjuk, hogy a 7-es gombot lenyomjuk 4-szer. (Táblára írjuk: 7777) A „Z” betűt úgy kapjuk, hogy a 9-es gombot lenyomjuk 4-szer. (Táblára folytatólagosan: 9999) Az „I” betűt így kapjuk: (Táblára folytatólagosan: 444) Az „A” betűért a 2-est nyomjuk le egyszer. (Táblára tovább: 2) A felkiáltójel pedig az 1-es 4-szer. (Táblára tovább: 1111) Ekkor a táblán a következő kód látszik: 7777999944421111. Mi a probléma ezzel a kódolással? Lehet, hogy az sms-ben nem is mindig azt küldjük el, amit szeretnénk? A válaszok ugyanarra a hibára hívják fel a figyelmünket: itt sem látjuk az egyes szakaszok határát, vagyis a 7777 az biztosan egy „S” betű, vagy esetleg egy „P” és egy „R” egymás után? A megoldáshoz táblázatot készítünk (következő feladatlap). Mielőtt kiadjuk a kódtáblázatot, beszélgessünk az adatok táblázatba foglalásának jelentőségéről és alkalmazásáról. Végzős vagy fakultációra járó tanulóknál megemlíthetjük a mátrix fogalmát is. A táblánál pedig a következőt csináljuk: Az „S” betűt úgy kapjuk, hogy a 7-es gombot lenyomjuk 4-szer. (Táblára írjuk: 74) A „Z” betűt úgy kapjuk, hogy a 9-es gombot lenyomjuk 4-szer. (Táblára folytatólagosan: 94) Az „I” betűt így kapjuk: (Táblára folytatólagosan: 43) Az „A” betűért a 2-est nyomjuk le egyszer. (Táblára tovább: 21) A felkiáltójel pedig az 1-es 4-szer. (Táblára tovább: 14) Végül: 7494432114 12
Fejlesztő matematika (5–12. évf.)
KOMPLEX FELADATOK Gyak. alkalmazás
Válogatott témák – válogatott megoldások
F 3.4
4. Kódolás és kódfejtés 2. Amikor sms-t írunk, akkor is számokat használunk a betűk helyett. Például a „Szia!” úgy keletkezik, hogy lenyomjuk a 7-es gombot 4-szer, utána a 9-est 4-szer, és így tovább. Tekintsük az alábbi táblázatot, ahol az első oszlop jelöli a telefon gombjait, az első sor pedig a leütések számát. Vagyis egy karakter úgy keletkezik, hogy kiválasztjuk először a neki megfelelő gombot (az első oszlopban lévő megfelelő számot), majd a leütés számát (például s = 74 vagy e = 32). 0 1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 . a d g j m p t w
2 , b e h k n q u x
3 ? c f i l o r v y
4 ! á é í
5 :
ó s ú z
ö
ő
ü
ű
sorszóköz 0 0 tab „ törés * A 99 jelentse azt, hogy a következő karakter nagybetű.
6 ; [ +
7 ( ] -
8 ) { *
9 } /
nagy* ’
=
%
1. A kódtáblázat segítségével kódoljuk az alábbi szöveget! Mi a jobb? Az örök boldogság vagy egy tábla csoki? 2. Fejtsük meg a következő kódokat! a)
997432616143017432610151632222120161436281012194 01657365520122635331634174244111
b)
99324193018124225321012374635243015163222212016 14362810174326161430174326111
c)
99813242248101324193018124225321012374635243015 16322221201614362810121940165736552012263533163 4174244111 Fejlesztő matematika (5–12. évf.)
13
13–18. év
KOMPLEX FELADATOK Válogatott témák – válogatott megoldások
Szabályfelismerés
F 3.4
5. Javítható még az előző kód?
15–18. év
Az előző kód, úgy tűnik, működik. Azonban a kódolónak arra is figyelnie kell, hogy illetéktelenek ne tudják megfejteni az üzenetet, de eközben a kód ne legyen sokkal hosszabb az eredeti szövegnél. 1. Hogyan alakítsuk a kódot, hogy egy illetéktelen olvasónak megfejthetetlen legyen, de közben mi (vagy az, akinek írtuk) könnyedén vissza tudja fejteni? 2. Hogyan tudjuk egyszerűbb (rövidebb) alakra hozni a kódot? Segíthet-e ebben az oszthatóság? 3. Az illetéktelen kódfejtők az ismétlődő karaktercsoportokat keresik a kódokban. Hogyan tudnánk elrejteni például a túl sokszor ismétlődő 01 számpárt? (A 01 jelenti a szóközt.) Alább az előző feladat kódja látható. Ugye, hogy túl sokszor szerepel a 01? 9981324224810132419301812422532101237463524301516322 2212016143628101219401657365520122635331634174244111
14
Fejlesztő matematika (5–12. évf.)
KOMPLEX FELADATOK Szabályalkotás
Válogatott témák – válogatott megoldások
F 3.4
6. Hogyan segíthet a 2-es számrendszer? A mai számítógépek bináris rendszerűek, vagyis a 0 és 1 számjegyekkel kódolnak mindent. Lehetséges, hogy a kettes számrendszer egy másik tökéletes kódolási eljáráshoz vezet?
15–18. év
1. Hány különböző négyjegyű szám képezhető a 0, 1 számjegyek felhasználásával akkor, ha megengedjük, hogy a 0 álljon elől? 2. Hány jegyű legyen az a csak 0 és 1 számjegyeket tartalmazó szám, amelyben a számjegyek összes variációs lehetősége legalább 60? 3. Vajon hová vezet az előző kérdés? Hogyan lesz ebből kódolás? 4. Az ötletet felhasználva készítsünk egy kódtáblázatot: A
Í
Q
Y
9
Á
J
R
Z
.
B
K
S
0
,
C
L
T
1
;
D
M
U
2
?
E
N
Ú
3
!
É
O
Ü
4
:
F
Ó
Ű
5
„
G
Ö
V
6
H
Ő
W
7
szóköz sortörés
I
P
X
8
-
Fejlesztő matematika (5–12. évf.)
15–18. év
15
KOMPLEX FELADATOK Gyak. alkalmazás
Válogatott témák – válogatott megoldások
F 3.4
7. Kódoljunk a 2-es számrendszerrel!
15–18. év
Az előbb kiszámoltuk, hogy hatjegyűnek kell lennie annak a 0 és 1 számjegyekből képzett számnak, amelyben a számjegyek variációival lefedhető az összes karakter (32 kevés lenne, a 64 sok, tehát elég). Lássuk ezt táblázatban: A Á B C D E É F G H I
000 000 000 001 000 011 000 111 001 111 011 111 111 111 000 010 000 110 001 110 011 110
Í J K L M N O Ó Ö Ő P
111 110 000 100 001 100 011 100 111 100 001 000 011 000 111 000 010 000 110 000 100 000
Q R S T U Ú Ü Ű V W X
000 101 001 001 010 001 100 001 001 010 010 010 100 010 010 100 100 100 101 000 010 101
Y Z 0 1 2 3 4 5 6 7 8
010 110 9 111 100 110 110 . 111 110 101 110 , 010 010 101 111 ; 011 101 101 111 ? 110 010 101 101 ! 111 001 111 101 : 011 010 111 101 „ 001 100 110 100 szóköz 001 110 110 100 sor011 törés 101 110 100 101 011
1. A kódtáblázat segítségével kódoljuk az alábbi szöveget, majd a kapott számot írjuk át 10-es számrendszerbe! matek 2. Fejtsük meg a következő kódot! Ügyeljünk a váltásra! 20009 16
Fejlesztő matematika (5–12. évf.)
KOMPLEX FELADATOK Válogatott témák – válogatott megoldások
MELLÉKLET
F 3.4
1. számú melléklet: Kódoló és kódfejtő program A 4. feladatlapon megtaláltuk azt a kódolási eljárást, amely a téma feldolgozása során a legjobban használhatónak tűnt. Az alábbi címen elérhető és letölthető egy kódoló és egy kódfejtő program, amely a 4. feladat kódtáblázatán alapul. Tanulságos és emlékezetes lehet, ha a tanulók kipróbálhatnak egy egészen egyszerű, de mégis valódi kódoló és kódfejtő programot. Segítségükkel a diákok hosszabb szövegeket is pillanatok alatt kóddá alakíthatnak, illetve hosszú számsorokból nyerhetnek értelmes szöveget. A programok hasznos lehetnek a feladatok ellenőrzésekor is. A kódoló és a kódfejtő program letöltése itt érhető el: http://www.raabe.hu/fmf (A belépéshez szükséges kód mindig a legfrissebb kiegészítő kötet belső borítóján található köszöntőlevélben szerepel.) Mindkét program futtatható bármilyen (napjainkban használt) Windows alapú operációs rendszeren. A programok használata rendkívül egyszerű. Megnyitás után megjelenik egy utasítás, ami a szöveg, illetve a kód begépelését kéri. Ekkor írjuk be a kódolni kívánt tartalmat. Fontos, hogy a szövegben ne használjunk ékezeteket és sortörést (entert), a szóközök helyett pedig alulvonást (_) alkalmazzunk. A kódfejtő programba csak „értelmes” számpárok sorozatát írjuk, tehát olyan kétjegyű számokat, amelynek a táblázat alapján értelmük van. Ezután nyomjuk meg az enter billentyűt, és a program kiírja a kódot, szöveget. A program végül a szokásos módon bezárható (az „x”-re kattintva a jobb felső sarokban), vagy üssük le a 0, majd az enter billentyűt. A következő oldalakon közzétesszük a kódoló program C++ nyelven készült utasítássorozatát. Érdekességképpen említjük meg, hogy a programnyelv használata maga is egyfajta kódolásként értelmezhető.
Fejlesztő matematika (5–12. évf.)
17
KOMPLEX FELADATOK Válogatott témák – válogatott megoldások
MELLÉKLET
A kódoló alkalmazás C++ programkódja #include
#include <string> using namespace std; int main() { string s; cout << „Irja be a kodolni kivant szoveget! A szokozok helyett alulvonast hasznaljon (_)!” << endl; cin >> s; for (int i=0;i<s.length();i++) { if (s[i]==’a’) { cout << „21”; } else if (s[i]==’b’) { cout << „22”; } else if (s[i]==’c’) { cout << „23”; } else if (s[i]==’d’) { cout << „31”; } else if (s[i]==’e’) { cout << „32”; } else if (s[i]==’f’) { cout << „33”; } else if (s[i]==’g’) { cout << „41”; } else if (s[i]==’h’) { cout << „42”; } else if (s[i]==’i’) { cout << „43”; } else if (s[i]==’j’) { cout << „51”; }
18
else if (s[i]==’k’) { cout << „52”; } else if (s[i]==’l’) { cout << „53”; } else if (s[i]==’m’) { cout << „61”; } else if (s[i]==’n’) { cout << „62”; } else if (s[i]==’o’) { cout << „63”; } else if (s[i]==’p’) { cout << „71”; } else if (s[i]==’q’) { cout << „72”; } else if (s[i]==’r’) { cout << „73”; } else if (s[i]==’s’) { cout << „74”; } else if (s[i]==’t’) { cout << „81”; } else if (s[i]==’u’) { cout << „82”; } else if (s[i]==’v’) { cout << „83”; } else if (s[i]==’w’) { cout << „91”; } else if (s[i]==’x’) { cout << „92”;
Fejlesztő matematika (5–12. évf.)
} else if (s[i]==’y’) { cout << „93”; } else if (s[i]==’z’) { cout << „94”; } else if (s[i]==’1’) { cout << „10”; } else if (s[i]==’2’) { cout << „20”; } else if (s[i]==’3’) { cout << „30”; } else if (s[i]==’4’) { cout << „40”; } else if (s[i]==’5’) { cout << „50”; } else if (s[i]==’6’) { cout << „60”; } else if (s[i]==’7’) { cout << „70”; } else if (s[i]==’8’) { cout << „80”; } else if (s[i]==’9’) { cout << „90”; } else if (s[i]==’0’) { cout << „00”; } else if (s[i]==’_’) { cout << „01”; } else if (s[i]==’.’) {
F 3.4
KOMPLEX FELADATOK MELLÉKLET
Válogatott témák – válogatott megoldások cout << „11”; } else if (s[i]==’,’) { cout << „12”; } else if (s[i]==’?’) { cout << „13”; } else if (s[i]==’!’) { cout << „14”; } else if (s[i]==’:’) { cout << „15”; } else if (s[i]==’;’) { cout << „16”; } else if (s[i]==’A’) { cout << „9921”; } else if (s[i]==’B’) { cout << „9922”; } else if (s[i]==’C’) { cout << „9923”; } else if (s[i]==’D’) { cout << „9931”; } else if (s[i]==’E’) { cout << „9932”; } else if (s[i]==’F’) { cout << „9933”; } else if (s[i]==’G’) { cout << „9941”; } else if (s[i]==’H’) { cout << „9942”; } else if (s[i]==’I’) { cout << „9943”;
} else if (s[i]==’J’) { cout << „9951”; } else if (s[i]==’K’) { cout << „9952”; } else if (s[i]==’L’) { cout << „9953”; } else if (s[i]==’M’) { cout << „9961”; } else if (s[i]==’N’) { cout << „9962”; } else if (s[i]==’O’) { cout << „9963”; } else if (s[i]==’P’) { cout << „9971”; } else if (s[i]==’Q’) { cout << „9972”; } else if (s[i]==’R’) { cout << „9973”; } else if (s[i]==’S’) { cout << „9974”; } else if (s[i]==’T’) { cout << „9981”; } else if (s[i]==’U’) { cout << „9982”; } else if (s[i]==’V’) { cout << „9983”; } else if (s[i]==’W’) { cout << „9991”; }
F 3.4
else if (s[i]==’X’) { cout << „9992”; } else if (s[i]==’Y’) { cout << „9993”; } else if (s[i]==’Z’) { cout << „9994”; } else { cout << „ itt valamit elgepelt „; } } cout << endl; cout << „Nyomja meg a 0 gombot, majd az entert a kilepeshez!” << endl; cin >> n; return 0; }
Fejlesztő matematika (5–12. évf.)
19
KOMPLEX FELADATOK Válogatott témák – válogatott megoldások
Az Ön jegyzetei, kérdései*:
* Kérdéseit juttassa el a RAABE Kiadóhoz! 20
Fejlesztő matematika (5–12. évf.)
F 3.4