Íme a harmadik hullám, de élvezd az elsőt és a másodikat is, ahol még számos fraktálos, genomos, fehérjés és mindenféle 1-7, 1-9 trófeás vad les itt is, a korábbi első, illetve a második hullámban Rád! (Ha mást nem mondunk, akkor a szokásos "hegylakó szabály" van: csak egy maradhat, azaz az első vadászé a trófea.)
Ha mást nem mondunk, akkor a jelen hullám feladatainak megoldását C, C++, Qt C++-ban várjuk. De már fodrozódnak itt más nyelveket preferáló feladatok is, ezeknél a nyelveket a feladatnevekben is feltüntetjük (ugyanazon feladat más nyelvű megvalósítása nem számít hasonló feladatnak, így elszámolhatósága esélyes :)
Itt a tavasz, itt az új szerelem
Ha belelkesedsz egy billentyűzet láttán, akkor ismerd fel, az új szerelem: a programozás. Ha nem érzed, miről beszélek, akkor subliminal messages. De tréfa nélkül: emlékezz az első előadás mottóira, például
"Aminek van értelme: (a) kódot olvasni és (b) kódot írni.”
Eric Steven Raymond: How To Become A Hacker
Hogyan lesz az emberből Hacker: http://esr.fsf.hu/hacker-howto.html
Ennek megfelelően még mindig nem késő, hogy elkezdj programozni! Itt a tavaszi szünet, használd fel ezt a kis szusszanásnyi időt élvezettel: csatlakozz a vadászokhoz! (Persze a harmadik hullám feladatai nem könnyűek; vagy apró (1-2 trófeás) vadakkal kezd, vagy lapozd fel a korábbi hullámokat.)
20 kisbajnokságos feladatok
- (ÉLES) Sorsjáték: készíts saját sorsjáték ütemezőt a MINIX kernelhez. (help a szobában futó 3.1.3 Minix, ahol megy a kernelben a random szám generálás :)
19 kisbajnokságos feladatok
- (ÉLES) Foci 5: írj progit "igazi" (pl. YouTube-os) videón egy játékos követésére!
16 kisbajnokságos feladatok
- (ÉLES) Foci 4: írj progit "FerSML videón" egy játékos követésére!
13 kisbajnokságos feladatok
- (KÉSZ) Foci 3: írj progit "igazi" (pl. YouTube-os) videón a labda követésére!
12 kisbajnokságos feladatok
- (ÉLES) TCP 7: írj egy TCP-s webszerver statisztika számolót: parancssor argumentumban kap egy gépnevet vagy IP-t, megnézi milyen szervert futtat, illetve a HTTP válaszbeli további gépeken folytatja a kutatást, miközben számolgatja a statisztikát, amit végül (elfogynak a gépek, vagy elér számuk egy limitet) kiír. (help: 9. ea.)
11 kisbajnokságos feladatok
- (ÉLES) TCP 8: írj egy TCP-s webpókot: parancssor argumentumban kap egy URL-t, letölti és előre megadott szavak előfordulását figyeli, ha talál feljegyzi, a lap linkjein lépked tovább (help: 9. ea.)
- (ÉLES) Foci 1: írj progit a "FerSML videón" a labda követésére!
- (KÉSZ) Foci 2: írj progit a "házi videón" a labda követésére (pl. itt és itt)!
10 kisbajnokságos feladatok
- (ÉLES) Obi-Wan Kenobi: készíts egy olyan programot, ami az előadás videóira képes az előadó kezébe a mester kék fénykardját rajzolni:
- (ÉLES)
9 kisbajnokságos feladatok
- (ÉLES) Szorgos hódok remix: készíts rekombináló programot: http://arxiv.org/abs/0908.4013! (BB-s gépek utasításait véletlenszerűen rakosgatod össze, így lottózol :)
8 kisbajnokságos feladatok
- (KÉSZ) Proxy 1: írj egy proxy szervert!
- (ÉLES) Kém 1: folyamatosan figyel egy URL-t, hogy változik-e, ha igen, dob egy mailt.
- (ÉLES) Kém 3: 1x1 pixeles transzparens png-t küldő TCP szerver, ami logolja a kliens adatait (honnan, mikor töltötték le, lapokba img src="gép:port" formában hívódik a szerver), mailt dob, ha valaki megnézi azt a lapot, ami (a képen keresztül) hivatkozza a szervert.
- (KÉSZ) Kép CPP 1: saját "képfeldolgozásos" osztályodban terheld túl a + operátort, hogy képeket lehessen "összeadni"!
7 kisbajnokságos feladatok
- (ÉLES)
- (ÉLES) Hangyás 1: írj egy hangya szimulációs Qt progit, valahogy így mutasson (itt az "elmélet")!
- (ÉLES, Python) Könyves Kálmán: készíts csevegő robotot, aki a beszélgetések közben építi az LZW fát a szavakat véve egy "betűnek". Így fessen pl. (help: 11. ea. és www.inf.unideb.hu/~nbatfai/kk/)
6 kisbajnokságos feladatok
- (ÉLES) Hangyás 2: írj egy hangya szimulációs Qt progit, valahogy így mutasson!
- (KÉSZ) Qtrajzoló 1: írj egy Qt rajzolóprogit, az egérrel lehessen rajzolni, a képet S billenytűvel lehessen menteni!
- (KÉSZ) Ikersárkány: írj egy olyan Qt progit, ami ábrázolja az i-1 alapú számrendszer nulla egészrészű halmazát (help: papíron)
- (ÉLES) TCP 1: írj egy olyan TCP/IP-s programot, ami parancssor argumentumként kapott URL-t letölt, lement, illetve ha html lapról van szó, akkor a (href) hivatkozott URL-eket is letölti!
- (KÉSZ, Python) PyLZW fa: írd át az LZW-s z.c-nket olyanra, hogy nem 0, 1 betűre, s nem is a T, C, A, G betűkre, hanem tetszőleges szavakra menjen a fa építése.
- (ÉLES, C, Qt C++(KÉSZ), Java(KÉSZ)) Kocka 1: parancssor argumentumként kapott képet pixelesít.
- (ÉLES C, Qt C++, Java) Mandel szerver: böngésző címsorából hivatkozva küldjön egy Mandelbrot halmazt!
- (ÉLES) Kém 2: 1x1 pixeles transzparens png-t küldő TCP szerver, ami logolja a kliens adatait (honnan, mikor töltötték le, lapokba img src="gép:port" formában hívódik a szerver).
- (KÉSZ) P-szálak ismétlő: írj olyan C programot (a 4. ea. mintájára, illetve PP 67) amiben 100 szál cserélgeti 2 globális változó értékét. Mutasd meg, hogy mutex nélkül elromlik, mutexxel nem.
- (ÉLES) Counter 1: saját számláló osztályban terheld túl a -- operátor pre- és postfix változatát! (help: 24 könyv 247. o. (***))
5 kisbajnokságos feladatok
- (KÉSZ) Qtrajzoló 1: írj egy Qt rajtzolóprogit, az egérrel lehessen rajzolni!
- (ÉLES) TCP 2: írj egy olyan TCP/IP-s programot, ami parancssor argumentumként kapott URL-t letölt és lement!
- (KÉSZ) IPC 1: írj (természetesen jól működő) szimulációs progit az ebédelő filoszok problámára! (help: 4. ea. kódjai)
- (KÉSZ) IPC 2: írj (természetesen jól működő) szimulációs progit az írók-olvasók problémára! (help: 4. ea. kódjai)
- (KÉSZ) IPC 3: írj (természetesen jól működő) szimulációs progit az alvó borbély problémára! (help: 4. ea. kódjai)
- (ÉLES, Python) PyTCAG: írd át az LZW-s z.c-nket olyanra, hogy nem 0, 1 betűre, hanem a T, C, A, G betűkre megy és megoldja ezt a feladatot.
- (ÉLES, Java) JTCAG: írd át az LZW-s z.c-nket olyanra, hogy nem 0, 1 betűre, hanem a T, C, A, G betűkre megy és megoldja ezt a feladatot.
- (KÉSZ) LZWCPP 5: a naiv első átiratban a gyökértől meg lehessen kérdezni a fa mélységét, ághosszainak átlagát, szórását!
- (KÉSZ) LZWCPP 6: a második átiratban a fától meg lehessen kérdezni a fa mélységét, ághosszainak átlagát, szórását!
4 kisbajnokságos feladatok
- (KÉSZ) PPplayer: írj egy videó lejátszó programot! (gstreamer, help: 8. ea.)
- (ÉLES) TCP 3: írj egy olyan TCP/IP-s programot, ami parancssor argumentumként kapott URL-t letölt!
- (KÉSZ) TCP 4: írj egy olyan TCP/IP-s programot, ami parancssor argumentumként kapott, képre mutató URL-t letölt és elment fájlba!
- (ÉLES) LZWCPP 1: a naiv első átiratban legyen külön headerben az osztálydefiníció!
- (KÉSZ) LZWCPP 2: a naiv első átiratban a gyökértől meg lehessen kérdezni a fa méylségét!
- (KÉSZ) LZWCPP 3: a naiv első átiratban a gyökértől meg lehessen kérdezni a fa ághosszainak átlagát!
- (ÉLES) LZWCPP 4: a naiv első átiratban a gyökértől meg lehessen kérdezni a fa ághosszainak szórását!
- (ÉLES) LZWCPP 7: a második átiratban a fától meg lehessen kérdezni a fa mélységét!
- (KÉSZ) LZWCPP 8: a második átiratban a fától meg lehessen kérdezni a fat, ághosszainak átlagát!
- (ÉLES) LZWCPP 9: a második átiratban a fától meg lehessen kérdezni a fa ághosszainak szórását!
3 kisbajnokságos feladatok
- (KÉSZ) Világszépe fraktál nagyító szépségverseny 1: saját Mandelbrot nagyító progiddal készíts nagyítási sorozatokat, tedd fel valahová, ahol lehet lájkolni, akiét legtöbben lájkolják április 1 de. 10-og, azé a trófea.
- (ÉLES) Nyers socketek: írj saját pinget! (PP 158)
- (ÉLES, C, Qt C++-kész, Java-kész) Kocka 2: parancssor argumentumként kapott képre ráírja az ugyancsak így kapott szöveget.
2 kisbajnokságos feladatok
- (KÉSZ) Világszépe fraktál nagyító szépségverseny 2: saját Mandelbrot nagyító progiddal készíts képeket, tedd fel valahová, ahol lehet lájkolni, akiét legtöbben lájkolják április 1 de. 10-og, azé a trófea.
- (KÉSZ) B&L(**) feladat: a 326. oldali feladat (Participiant osztályos).
- (KÉSZ) Idő 1: meddig tart 1000 processzt, illetve 1000 P-szálat létrehozni? Hasonlítsd össze! (help: PP 65)
- (KÉSZ) Idő 2: valamely programodban mérj valamit, hogy meddig tart (használd a tms struktúrát)! (help: PP 66)
- (KÉSZ) Mutex: demonstráld, hogy védelem nélküli globálist elrontanak a P-szálak (védelem hiányában)! (help: PP 67)
1 kisbajnokságos feladatok
- (ÉLES) Pi fstream: a pi-napi elosztott számítás eredménye részszámításonként egy-egy állomány a szerveren, írj olyan programot (C fgets/fputc, read/write már kilőve a 2. hullámban, így C++ std::fstream jöhet), ami ezeket a megfelelő sorrendben (ami a fájlnévből derül ki) összefésüli egyetlen állománnyá!
- (KÉSZ) TCP 5: írj egy TCP-s daytime szervert (a PP-ben csak ilyen van :)
- (KÉSZ) TCP 6: írj egy TCP-s echo szervert!
- (ÉLES) STD 1: írj olyan programot, amivel demonstrálni tudod, hogy mély vagy sekély másolás történik-e, ha érték szerint adod át a dinamikus tömböt (std::vector, help: 6, 7. ea.)
- (ÉLES) STD 2: írj olyan programot, amivel demonstrálni tudod, hogy mély vagy sekély másolás történik-e, ha érték szerint adod át a vermet (std::stack, help: 6. ea.)
- (ÉLES) STD 3: írj olyan programot, amivel demonstrálni tudod, hogy mély vagy sekély másolás történik-e, ha érték szerint adod át a láncolt listát (std::list, help: 6, 7. ea.)
- (ÉLES) STD 4: írj olyan programot, amivel demonstrálni tudod, hogy mély vagy sekély másolás történik-e, ha érték szerint adod át az asszociatív tömböt (std::map, help: 6, 7. ea.)
- (ÉLES) STD 3: írj olyan programot, amivel demonstrálni tudod, hogy mély vagy sekély másolás történik-e, ha érték szerint adod át a halmazt (std::set, help: 6, 7. ea.)
- (KÉSZ) PP példa alapján produkáld az ebédelő filoszos holtpontot!
- (KÉSZ) Készíts saját int verem osztályt, mélymásolással másolódjon! (help: 6. ea.)
- (ÉLES) Készíts saját int dinamikus tömb osztályt, mélymásolással másolódjon! (help: 6. ea.)
- (KÉSZ, Java) A polár generátort írd át és nézz pár sebességtesztet a C++ változattal hasonlítva! (help: 6. ea. és (kb. a lap közepén a PolárGenerátor osztály))
- (ÉLES) Világszépe fraktál nagyító szépségverseny 3: S billentyűre mentse a fraktál nagyítást mindig új néven, pl. sorszámozza! (help: itt)
- (KÉSZ) RGB 1: írj olyan programot, ami a paraméterben kapott kép pixeleinek elveszi az R részeit (help:
for (int i = 0; i < kep.get_height (); ++i) { for (int j = 0; j < kep.get_width (); ++j) { png::rgb_pixel eredetirgb = kep.get_pixel(j, i); png::rgb_pixel ujrgb ( 0, eredetirgb.green, eredetirgb.blue); kep.set_pixel (j, i, ujrgb); } std::cout << "." << std::flush; }
részletek itt) - (KÉSZ) RGB 2: milyen képet produkál, ha az előző csipetben ilyen a színezés:
png::rgb_pixel eredetirgb = kep.get_pixel(j, i);
png::rgb_pixel ujrgb ((eredetirgb.red+eredetirgb.green)%255, (eredetirgb.green+eredetirgb.red)%255, eredetirgb.blu - (KÉSZ) RGB 3: milyen képet produkál, ha az előző csipetben ilyen a színezés:
png::rgb_pixel eredetirgb = kep.get_pixel(j, i);
png::rgb_pixel ujrgb (2*eredetirgb.blue-eredetirgb.red, 2*eredetirgb.blue-eredetirgb.red, 0);
kep.set_pixel (j, i, ujrgb); - (ÉLES) RGB 4: módosítsd a színezést, hogy ezt produkálja:
- (KÉSZ) Mennyi "sizeof('0') * 8" C-ben és mennyi C++-ban?
- (ÉLES) LZWCPP 10: a második átiratban mutasd meg (kiíratás a konstruktorokban), hogy a tagok konstruktorainak lefutása megelőzi a tartalmazó konstruktorának lefutását, pl.:
Csomopont (char b = '/'):betu (b), balNulla (0), jobbEgy (0) {
std::cout << "Csomopont" << this->betu << std::endl << std::flush;
} - (ÉLES) LZWCPP 11: a naiv első átiratotl módosítsd úgy, hogy ne a példányokhoz, hanem az osztályhoz tartozzon a mélység!
- (ÉLES) LZWCPP 12: a második átiratban módosítsd úgy a lekérdező módszereket (pl. Csomopont *balra();) hogy jelezzék, nem változtatják az osztályt!
Figyelem: élő közösségként, a vadászattal együtt élve tudjátok, hogy melyik feladat ÉLES, melyik kész, mert nem mindig tudom időben frissíteni!
Ha megtetszik egy feladat, de nem tudsz belekezdeni, vagy elakadtál, bátran kommenteld!
*: www.imsdb.com/scripts/Matrix,-The.html
**: Benedek Zoltán, Levendovszky Tihamér: Szoftverfejlesztés C++ nyelven, Budapest, 2007, Szak K.
***:Jesse Liberty, Horvath, David B. Büki András: Tanuljuk meg a C++ programozási nyelvet 24 óra alatt.
Az utolsó 100 komment: