HTML

Programozó Páternoszter

Ez a Programozó Páternoszter (PP) blogja, a programozásról szól. Aktualitása, hogy a Debreceni Egyetem Informatikai Kara Magasszintű programozási nyelvek 1-2, C++ esattanulmányok, Java esettanulmányok című kurzusainak blogja is egyben.

A vadászat

A Debreceni Egyetem Programozói Évkönyve: az UDPROG projekt. A szakmai fórumunk a Facebook-en. Az új előadások a prezin.
A régi előadások:
Prog1:
1. C bevezetés
2. C tárgyalás
3. C befejezés
4. C a gyakorlatban
5. C++ bevezetés
6. C++ tárgyalás
7. C++ befejezés
8. C++ a gyakorlatban
9. Java platform bevezetés
10. Kvantuminformatikai alg. bev.
Prog2:
1. Java bevezetés
2. Java tárgyalás
3. Java befejezés
4. Java a gyakorlatban
5. Software Engineering bev.
6. Java EE bevezetés
7. AspectJ bevezetés
8. BPMN-BPEL SOA programozás
9. C++ haladó
10. Tensorflow

Kövess engem!

Friss topikok

Linkblog

"Hey, Mikey, he likes it! Ready for more?"*

2011.02.14. 19:03 nb

Mivel jó néhányan ráéreztek a dolog ízére, íme ide gyűjtünk majd néhány további kisbajnokságot. (Itt a kettőnél nagyobb egyenlőt érő kisbajnokságok programjait személyesen kell bemutatni és megvédeni, kivéve, ha jelezzük, hogy adott poszt kommentjeként is beküldhető.)

7 kisbajnokságos feladatok

6 kisbajnokságos feladatok

  • (KÉSZ) Mandelbrot halmaz: a 4. előadás Qt-s példáját fejleszd tovább a Javát tanítok példájának megfelelően, azaz egérrel lehessen tartományt kijelölni nagyításra! (Az elsőé a trófea, jöhet a linkelt poszt kommentjében is.)
  • (KÉSZ) Mandelbrot halmaz: a 4. előadás Qt-s példáját fejleszd tovább a Javát tanítok példájának megfelelően, azaz grafikusan (off vagy on)line ábrázolja a halmazon az iterációkat! (Az elsőé a trófea, jöhet a linkelt poszt kommentjében is.)

5 kisbajnokságos feladatok

4 kisbajnokságos feladatok

  • (KÉSZ) Isten üzenete, elosztott verzió: számolj ki a BBP algoritmussal a Pi hexadecimális kifejtésének egymilliomodik jegyétől annyi jegyet, amihez egy labornyi PC-nknek legalább  8 óra kell! Részletek: PP 228: www.inf.unideb.hu/~nbatfai/ProgramozoPaternoszter.pdf. (Az éles tesztelésre egy laborban, egy vasárnap kerülhet sor, tehát ezt elosztva kell nyomni.)
  • (ÉLES) A 2. előadásban megismert CompLearn csomaggal hasonlíts össze a laborodon beadott (bemutatott) összes ziv-es beadandó (bemutatandó, megvédendő) labor sikeres teljesítéséhez szükséges programot. (Laboronként a két először elkészülőé a trófea, az eredményül kapott gráfot értelmezni is kell, hogy ki forrásai kiével vannak a legközelebi rokonságban!)
  • (KÉSZ) Aki először megmondja, hogy mennyi az LZW fa ághosszainak szórása a humán 2 kromóban lévő genetikai kódnak. A kódot karakteresen a szereplő 5 betű alapján vizsgáld, jöhet kommentben is a megoldás. (A szórást a Jávácska ONE-beli Hetedik Szem (javacska-one-1.0.0-projects.zip / hetedik-szem-1.0.0 / src / main / java / TudatSzamitas.java) kódja alapján fejleszd bele a korábbi kódunkba. A korábbi LZW-s kódunkba ne bináris fát építs, hanem olyat, aminek egy csomópontjából 5 mutató mutat a lehetséges 5 betűvel címkézett gyerek csomópontokra.)
  • (KÉSZ) Aki először bemutatja kommentben (screenshotokkal is) a 3. ea. alapján készített saját rendszerhívását, ami megmondja, hány folyamat van.
  • (ÉLES) Aki először bemutatja kommentben (screenshotokkal is) a 3. ea. alapján készített saját rendszerhívását, ami megmondja, adott folyamatnak melyik a következő szabad fájldeszkriptora.
  • (KÉSZ) Aki először bemutatja kommentben (screenshotokkal is) a 3. ea. alapján készített saját kernelmodulját, ami megmondja, hány folyamat van.
  • (KÉSZ) Aki először bemutatja kommentben az életjáték olyan (Javát tanítok felé lépő) továbbfejlesztését, amelyben billentyűnyomásra lehet gyorsítani, lassítani a sejttér életét.
  • (KÉSZ) Aki először bemutatja kommentben az életjáték olyan (Javát tanítok felé lépő) továbbfejlesztését, amelyben billentyűnyomásra lehet változtatni a sejttér celláinak méretét.
  • (ÉLES) Aki először bemutatja kommentben az életjáték olyan (Javát tanítok felé lépő) továbbfejlesztését, amelyben egérrel (kattintás és vonszolás) lehet ki/bakapcsolni cellákat.
  • (KÉSZ) Négy trófeáért lenne az első beküldőnek az a feladat, hogy az animált szőnyegen ne egy betű legyen egy pont (pixel), hanem olvassuk 3 betűnként a genetikai kódot (T, C, A, vagy G betűk egyike, vagy más, de azzal nem foglalkozunk, ez a mostanin a fehár) és a három betűnek megadva valami színezést egyetlen egy pixelt gyújtsunk ki a szőnyegen!

3 kisbajnokságos feladatok

  • (KÉSZ) Annak, aki először megmondja, hogy a esr.fsf.hu/hacker-howto.html lap bitenként nézve milyen mély ilyen "Ziv-Lempel" fát épít fel, részletek itt: progpater.blog.hu/2011/02/19/gyonyor_a_tomor (az elsőé a trófea, jöhet a linkelt poszt kommentjében is).
  • (ÉLES) A 2. előadásban megismert CompLearn csomaggal hasonlíts össze egy 1000 karakteres 0,1 betűkből álló véletlen mintát (saját C programmal generáld, lásd 1. ea. megfelelő laborkártyáját), egy 500 karakterből álló pszeudóvéletlen hexa betűkből álló mintát, a Pi hexa kifejtésének két 1000 betűs hosszú darabját (a 0. és az 1.000.000 helytől) és 100 olyan 0,1-et, amit Te magad érmével dobtál ki. A hexa betűket itt kódold át 4 karakteres binárisra és vegyél hozzá az összehasonlítandókhoz néhány fehérjét, például a Javát tanítok www.tankonyvtar.hu/informatika/javat-tanitok-1-1-genomi-080904 lapján említett ember, egér és C. elegans Tubulin alpha-2 chain fehérjéjét (ezeket is átkódolhatod megfelelően). (A képet mutasd be egy kommentben, az elsőé a trófea.)
  • (KÉSZ) Aki először megmondja, hogy mennyi az LZW fa ághosszainak szórása a humán 2 kromóban lévő genetikai kódnak. A kódot tedd át 2 betűnként hexába, aztán a hexa betűkből nyomj 4 bitet betűnként, az így kapott állományt vizsgáld, jöhet kommentben is a megoldás. (A szórást a Jávácska ONE-beli Hetedik Szem (javacska-one-1.0.0-projects.zip / hetedik-szem-1.0.0 / src / main / java / TudatSzamitas.java) kódja alapján fejleszd bele a korábbi kódunkba.)
  • (KÉSZ) PP 89- mintájára készíts egy saját curses alapú karakteres progit, az elsőé a trófea, jöhet screenshot kommentben, nyilván ne tök ugyanaz legyen, mint a pp 13. ábra mutatja!

2 kisbajnokságos feladatok

  • (KÉSZ) Isten üzenete: számold ki a BBP algoritmussal a Pi hexadecimális kifejtésének egymilliomodik jegyétől a következő ezer jegyet! Részletek: PP 228: www.inf.unideb.hu/~nbatfai/ProgramozoPaternoszter.pdf.
  • (KÉSZ) A 3. előadásban látható példa alapján írd fölül a glibc printf függvényét, hogy sárga háttéren, pirossal írjon a terminál ablakokba! (Az elsőé a trófea, jöhet kommentben).
  • (ÉLES) A 2. előadásban megismert CompLearn csomaggal hasonlíts össze egy 1000 karakteres 0,1 betűkből álló véletlen mintát (saját C programmal generáld, lásd 1. ea. megfelelő laborkártyáját), egy 500 karakterből álló pszeudóvéletlen hexa betűkből álló mintát, a Pi hexa kifejtésének két 1000 betűs hosszú darabját (a 0. és az 1.000.000 helytől) és 100 olyan 0,1-et, amit Te magad érmével dobtál ki. (A képet mutasd be egy kommentben, az elsőé a trófea.)
  • (KÉSZ)  Aki először megmondja, hogy mennyi az LZW fa ághosszainak szórása a humán 2 kromóban lévő genetikai kódnak. A kódot bináris állományként dolgozd fel (előtte persze azért tömörítsd ki :), jöhet kommentben is a megoldás. (A szórást a Jávácska ONE-beli Hetedik Szem (javacska-one-1.0.0-projects.zip / hetedik-szem-1.0.0 / src / main / java / TudatSzamitas.java) kódja alapján fejleszd bele a korábbi kódunkba.)
  • (ÉLES) Aki elsőnek sikerrel mutatja be kommentként a laborteljesítés szükséges (C++ osztályként implementált) feladatát, amit itt specifikáltunk (a sikerrel bemutatás azt jelenti, hogy jól működik a progi a mintákra és a kód is olvasható).
  • (KÉSZ) Aki először készíti el a szigorúan titkos gráfot.

1 kisbajnokságos feladatok

  • (ÉLES) Gyorsítsd duplájára a labor EXOR törő kódját: progpater.blog.hu/2011/02/15/felvetelt_hirdet_a_cia (egyszer hívd az exor fgv-t, hogy ez elég legyen, a titkos mellett használj egy második buffert), (az elsőé a trófea, jöhet a linkelt poszt kommentjében is).
  • (KÉSZ) Akinek kezdte a progi tiszta_lehet fgv.-e kiköpködni a lehetséges töréseket, tudja, hogy szükséges finomítani a függvényt. Vedd hozzá a feltételeihez, hogy az átlagos szóhossz 6 és 9 közé essen! (Ciklus a titkoson, megszámolni a szóközöket, a titkos_meret-et leosztva a ezzel kapjuk az átlagos szóhosszt.), (az elsőé a trófea, jöhet a linkelt poszt kommentjében is).
  • (KÉSZ) Mandelbrot halmaz: a 4. előadás Qt-s példáját módosítsd úgy, hogy csak szürke árnyalatú képeket rajzoljon! (Az elsőé a trófea, jöhet a linkelt poszt kommentjében is.)
  • (KÉSZ) Mandelbrot halmaz: a 4. előadás Qt-s példáját módosítsd úgy, hogy a Jávát tanítok példájának "kék színezését" (a hivatkozott linken legalul) használja! (Az elsőé a trófea, jöhet a linkelt poszt kommentjében is.)
  • (KÉSZ) Aki a genetikai kódot a kódnak megfelelő fehérjék sorozatává kódolja, pl.: TGT=Cys, TGG=Trp, TGA=STOP, segít a DNA codon table, jöhet kommentben a kód és egy kis rövid demó minta, hogy lássam jó-e.
  • (KÉSZ) Aki a 3. előadás vaarg-os példáját először bővíti sikerrel úgy, hogy kinyomjon %s-t is a sajatprintf().
  • (ÉLES) Aki a 3. előadásbeli minta alapján felüldefiniál egy nem változó argumentumszámú fgv.-t (az ne vegyen részt a versenyben, aki már vaargos felülírást megnyert :)
  • (KÉSZ) Aki a 3. előadásbeli állománykezelő példa alapján először hoz létre olyan fájlt, amire az ls -l azt mondja, hogy:
    $ ls -l olyan_fajl
    ---------- 1 tulajdonos csoport meret datum olyan_fajl
  • (ÉLES) Aki elsőnek sikerrel mutatja be kommentként a laborteljesítés szükséges feladatát, amit itt specifikáltunk (a sikerrel bemutatás azt jelenti, hogy jól működik a progi a mintákra és a kód is olvasható).
  • (ÉLES) Aki először felüldefiniálja (l. 3.ea.) a getchar() fgv.-t és a szokásos getchar/putchar cat jellegű progival így végtelen ciklust produkál (pl. a getchar() mindig 42-t ad vissza, mindentől függetlenül...)
  • (KÉSZ) Aki először bemutatja kommentben az életjáték olyan továbbfejlesztését, melyben további élőlényeket (pl.: lightweight spaceship) próbál ki a sejttérben.
  • (KÉSZ) Aminosav-hisztogram: progpater.blog.hu/2011/03/06/az_otodik_labor
  • (KÉSZ) Aminosav-hisztogram (1. módosítással): progpater.blog.hu/2011/03/06/az_otodik_labor
  • (KÉSZ) Aminosav-hisztogram (2. módosítással): progpater.blog.hu/2011/03/06/az_otodik_laborű
  • (KÉSZ) Aki először módosítja úgy a TCAG szőnyeget, hogy parancssor-argumentumként kapja a genetikai kódot tartalmazó állomány nevét.

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

180 komment

Címkék: genom qt humán genom mandelbrot halmaz lzw bbp glibc szorgos hód busy beaver radó tibor pi kifejzése turing gep tcag genetikai kód stdarg állománykezelés

A bejegyzés trackback címe:

https://progpater.blog.hu/api/trackback/id/tr422661233

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Painkiller19910110 2011.02.24. 22:36:36

Kedves Tanár Úr szerintem így nézhet ki a "ÉLES) Isten üzenete: számold ki a BBP algoritmussal a Pi hexadecimális kifejtésének egymilliomodik jegyétől a következő ezer jegyet! " megoldása:
6C65E52CB459350050E4BB178F4C67A0FCF7BF27206290FBE70F93B828CD939C475C728F2FDB0CB9

Painkiller19910110 2011.02.25. 23:06:48

Kedves Tanár Úr,

Most már szerintem jó lehet a dolog, 20 óra 10 perctől 23 óra 6 percig küzdtt vele a masinám. Íme itt az eredmény:
6C65E52CB459350050E4BB178F4C67A0FCF7BF27206290FBE70F93B828CD939C475C728F2FDB0CB923CF52C40D631D4DB2E98340AA25A6F07DB685C0A9C04F3F6E667CFD6E1764C83ECA94E79661FC180E6AEF581987E79E13278712CB01255E8CE4D9E048F782D756370548FB0778323CF2074C2716D121639F1DD5A31EF6C242676B3783AD528852CCA52A9B4F999C526B0750859AEEC9CE6635B30996A210CD419D5FD47A4E7AAF906E26A4CCF99A2E493BBB5E7D5E0B94F15196DA8CD1A0C57FE03A629B2D5842317C173D163EA8717B46930EE0FE82FEC4B01016F155FB446AA6958EAD9265EC0C914CB84755DD1BCE5100C23804D67A787BEC57CD7D8E190B3F55E3D2558927215504F141AC8B0BA836F7781E19664EFA8B22BEB3816A70F7210E4784A1F37762361286448CD051BCE3A4CE156D70CDBA256C1A36C38648633C8F13A53405795635084A2DEAF3B9066BC3863BB07447DDDBDE5644034A6893E3E1CFDB369631BAA4240D93F17F667F7C51ABF076F7C1BB35DECC240153F4817A579CBD1DAC895E8555929D1ADA3C787A0BF2881BBC44C4BE505E91FE5A28B9BA47D4845B7639239AD71D8B63BF9D23B2CC88C9D39C033B0482F5F801D778BBB734EA8B1BE878D129514BFA5C4A6D60E80CF4B14A2A5673992B1839723054BD44F767B03245F2873973EF6D84B2B96EFC9A

nb · http://fersml.blog.hu 2011.02.26. 10:02:37

@Painkiller19910110: ott a trófea! nekem is ez jött ki és az elejét, végén ellenőriztem itt is, pl. a vége: pi.nersc.gov/cgi-bin/pi.cgi?word=D84B2B96EFC9A&format=hex (priviben jöhet az azonosításod, hogy könyveljem a 2 trófeát)

eiborn 2011.02.27. 15:42:32

Egy tipp a glibc printf függvény átírásásra:
libsajat.c

#include <errno.h>
#include <stdarg.h>

int
printf (char *fmt, ...)
{
va_list ap;
errno = 1;

va_start (ap, fmt);
putchar (0x1B);
putchar ('[');
putchar ('1');
putchar (';');
putchar ('7');
putchar (';');
putchar ('4');
putchar ('1');
putchar (';');
putchar ('3');
putchar ('3');
putchar ('m');
vprintf (fmt, ap);
putchar (0x1B);
putchar ('[');
putchar ('0');
putchar ('m');
va_end (ap);

return 0;
}

Joe89 2011.02.27. 15:50:23

Sikerült összehoznom az "1 kisbajnokságos feladatok" közül ezt:
Mandelbrot halmaz: a 4. előadás Qt-s példáját módosítsd úgy, hogy csak szürke árnyalatú képeket rajzoljon! (Az elsőé a trófea, jöhet a linkelt poszt kommentjében is.)

Ide felraktam a 'pakkkot', remélem így jó lesz ...
dl.dropbox.com/u/13871711/fraktal.tar.gz

nb · http://fersml.blog.hu 2011.02.27. 16:05:38

@eiborn: egy screenshot (-al kiegészítve) megyőzőbb lenne, ha megoldható.

nb · http://fersml.blog.hu 2011.02.27. 16:06:19

@Joe89: egy screenshot (-al kiegészítve) meggyőzőbb lenne, ha megoldható.

eiborn 2011.02.27. 16:19:22

@nb:
imagerz.com/QFdDXFQAAlE
a glibc printf függvény átírásának screenshotja

nb · http://fersml.blog.hu 2011.02.27. 16:20:39

@Joe89: köszi, így van: (255-sor[i], 255-sor[i], 255-sor[i])
ott a trófea! Adminisztrálom.

nb · http://fersml.blog.hu 2011.02.27. 16:23:36

@eiborn: kiváló, jöhet priviben név/labor a könyveléshez.

Painkiller19910110 2011.02.27. 18:41:12

Mandelbrot halmaz: a 4. előadás Qt-s példáját módosítsd úgy, hogy a Jávát tanítok példájának "kék színezését" (a hivatkozott linken legalul) használja!
A "frakablak.cpp" részen kellett pofozni ennyit:

void FrakAblak::vissza(int magassag, int *sor, int meret)
{
for(int i=0; i<meret; ++i) {
QRgb szin = (255-sor[i]%16)|
(255-sor[i]%64) << 8 |
((255-sor[i]) << 16);

fraktal->setPixel(i, magassag, szin);
}
update();
}

phloriaN 2011.02.27. 18:56:20

Ez szvsz nem ugyanaz ami a www.tankonyvtar.hu/informatika/javat-tanitok-2-3-080904
oldalon van... :D
A közepe nem fekete

nb · http://fersml.blog.hu 2011.02.27. 19:17:55

@phloriaN: bizony igazad van!

@Painkiller19910110: Jól kell érteni a Javás kódot! Mert az nem mond mást, mint ezt:

szin = qRgb(
255-sor[i],
255-sor[i]%64,
255-sor[i]%16 );

a tologatás csak azt jelöli ki, hogy az int melyik FF méretű helye lesz az R, a G és a B

de ettől függetlenül még vagy két helyen bele kell nyúlni... :)

Szóval a verseny még nyitott!

phloriaN 2011.02.27. 19:25:42

Nekem ez mar sikerult, csak azon gondolkoztam hogyan kell ugy megcsinalni h a kozepe fekete legyen
De ha a kék elfogadhato ugy hogy a kozepe nem fekete, akkor ittvan a felette lévő feladat (piros):

img193.imageshack.us/img193/3987/frak3.jpg

nb · http://fersml.blog.hu 2011.02.27. 19:30:06

@phloriaN: várom a fekete közepűt, nekem már kész :)

Joe89 2011.02.27. 19:52:51

Nekem itt lenne egy próbálkozás, de elég fura megoldásom van ... :P

dl.dropbox.com/u/13871711/K%C3%A9perny%C5%91k%C3%A9p-2.png

A "Javat-tanítok" oldalon mintha kevesebb fekete lenne benne ...

De egy próbát megér .. :)

nb · http://fersml.blog.hu 2011.02.27. 19:55:28

@Joe89: feketének fekete, feltételesen ott a pont, de megnézném a kódrészletet, pls.

Joe89 2011.02.27. 19:59:28

Megnéztem a frakablak.h fájlban hogy az iteraciosHatar változó értéke 255 és ez alapján írtam egy feltételt, szóval ez elég fura megoldás ... :P

void FrakAblak::vissza(int magassag, int *sor, int meret)
{
for(int i=0; i<meret; ++i) {
QRgb szin;
if(sor[i]==255)
szin = qRgb(0,0,0);
else
szin = qRgb(255-sor[i], 255-sor[i]%64, 255-sor[i]%16 );
fraktal->setPixel(i, magassag, szin);
}
update();
}

phloriaN 2011.02.27. 20:05:22

Elmentem fürdeni és fürdés közben pont ez jutott eszembe hogy ezt a feltételt kell belecsepmészni és akkor valszeg fekete lesz, dehát latom vannak akik nálam gyorsabbak... ;D
Ez a végleges megoldás?

Joe89 2011.02.27. 20:10:13

@phloriaN: "vannak akik nálam gyorsabbak" ... Vagy inkább vannak akik fürdés helyett fraktálokat színezgetnek ... XD ... Na jó, inkább megyek én is zuhanyozni ... XD

phloriaN 2011.02.27. 20:10:19

@Joe89: az a feltétel amit irtál pont a

if(iteráció == iterációsHatár)

feltételnek felel meg a Javat tanitok oldalról

Joe89 2011.02.27. 20:14:31

@phloriaN: Igen, onnan szedtem össze ... Először be akartam csempészni még egy paramétert a vissza függvénybe (az iterációsHatár-t), de nagyon megkavarta a dolgokat, és akkor észrevettem hogy az iterációsHatár változónak a kezdőértéke 255, úgyhogy kipróbáltam hogy mi lesz ha csak simán beírom a 255-öt, és ez lett az eredmény ...

nb · http://fersml.blog.hu 2011.02.28. 15:46:18

@Joe89: valóban nem elegáns a mágikus 255, de a FrakSzal::run-ban töröld a iteráció %-os osztását. add át csak az iterációt és mellette, ahogy érezted a határt is (ehhez persze a .h-ban is kell illeszteni)

De ott a trófea, persze.

szimih 2011.02.28. 16:39:27

Aki először megmondja, hogy mennyi az LZW fa ághosszainak szórása a humán 2 kromóban lévő genetikai kódnak....

Szórása: 13.369839
Kivettem az első sort:
>gi|88954435|ref|NW_927708.1| Homo sapiens chromosome 2 genomic contig, alternate assembly Hs_Celera 211000035800763, whole genome shotgun sequence

Fájlt sor folytonossá kell tenni aki a későbbiekben a többi ehhez tartozót akarja megoldani. Egy gyorsan összedobott csúnya kód:
#include <stdio.h>

int main(){
char b;

while (read (0, (void *) &b, 1))
if(b != '\n')
write (1, &b, 1);
}

interfeca 2011.02.28. 17:48:32

Akinek kezdte a progi tiszta_lehet fgv.-e kiköpködni a lehetséges töréseket, tudja, hogy szükséges finomítani a függvényt. Vedd hozzá a feltételeihez, hogy az átlagos szóhossz 6 és 9 közé essen!
elkészült!

double
atlagos_szohossz (const char *titkos, int titkos_meret)
{
int sz=0;
for (int i=0; i<titkos_meret; ++i)
if (titkos[i] ==' ')
++sz;
return (double) titkos_meret/sz;
}

int
tiszta_lehet (const char *titkos, int titkos_meret)
{
double szohossz=atlagos_szohossz(titkos, titkos_meret);
return szohossz > 6.0 && szohossz < 9.0
&& strcasestr (titkos, "hogy") && strcasestr (titkos, "nem")
&& strcasestr (titkos, "az") && strcasestr (titkos, "ha");
}

void
exor (const char kulcs[], int kulcs_meret, char titkos[], int titkos_meret)
{

int kulcs_index = 0;

for (int i = 0; i < titkos_meret; ++i)
{
titkos[i] = titkos[i] ^ kulcs[kulcs_index];
kulcs_index = (kulcs_index + 1) % kulcs_meret;
}
}

int
exor_tores (const char kulcs[], int kulcs_meret, char titkos[],
int titkos_meret)
{
exor (kulcs, kulcs_meret, titkos, titkos_meret);

return tiszta_lehet (titkos, titkos_meret);
}

pi_zoli 2011.02.28. 18:14:18

az előzőhöz én még hozzátenném hogy ||titkos[i]=="\n" tehát a teljes valahogy így: double szh(const char titkos[],int titkos_meret)
{
int h=0,i;
for(i=0;i<titkos_meret;i++)
if (titkos[i]==' '||titkos[i]=='\n')
h++;
return (double)titkos_meret/h;
}

int
tiszta_lehet (const char titkos[], int titkos_meret)
{
return szh(titkos,titkos_meret)>=6.0&&
szh(titkos,titkos_meret)<=9.0&&strcasestr(titkos,"hogy")&&strcasestr(titkos,"nem")&&strcasestr(titkos,"az")&&strcasestr(titkos,"ha");
}
már csak mert nekem így müködött rendesen.

pi_zoli 2011.02.28. 18:25:32

ja és nem loptam kivételesen megírtam magamnak már tegnap :P ha jó jó ha nem akkor csak egy megjegyzés volt

interfeca 2011.02.28. 18:30:53

nekem nélküle csak a jó megoldást adta ki a feltört titkos szövegből... a kiegészítéssel rossz megoldást is dobott ki :/

pi_zoli 2011.02.28. 18:43:57

probold meg a titkos.l4 el is

nb · http://fersml.blog.hu 2011.02.28. 19:07:30

@interfeca: az is kéne nekem, hogy ez a fejlesztés hogy muzsikált, hányat dobott ki?

pi_zoli 2011.02.28. 19:08:24

Másik az exor gyorsítására pot buffert (nagyobb memóriafelhasználás mellett) betéve tényleg gyorsítható a progi. Ekkor a main nekem így néz ki: int
main (void)
{
char kulcs[KULCS_MERET];
char titkos[MAX_TITKOS];
char pot[MAX_TITKOS];
char *p = titkos;
int olvasott_bajtok;

while ((olvasott_bajtok =
read (0, (void *) p,(p - titkos + OLVASAS_BUFFER <MAX_TITKOS) ? OLVASAS_BUFFER : titkos + MAX_TITKOS - p)))
p += olvasott_bajtok;

for (int i = 0; i < MAX_TITKOS - (p - titkos); i++)
titkos[p - titkos + i] = '\0';
for (int ii = '0'; ii <= '9'; ii++)
for (int ji = '0'; ji <= '9'; ji++)
for (int ki = '0'; ki <= '9'; ki++)
for (int li = '0'; li <= '2'; li++)
for (int mi = '0'; mi <= '9'; mi++)
for (int ni = '0'; ni <= '9'; ni++)
for (int oi = '0'; oi <= '9'; oi++)
for (int pi = '0'; pi <= '9'; pi++)
{
kulcs[0] = ii;
kulcs[1] = ji;
kulcs[2] = ki;
kulcs[3] = li;
kulcs[4] = mi;
kulcs[5] = ni;
kulcs[6] = oi;
kulcs[7] = pi;

if (exor_tores (kulcs, KULCS_MERET, pot, p - titkos))
printf
("Kulcs: [%c%c%c%c%c%c%c%c]\nTiszta szoveg: [%s]\n",
ii, ji, ki, li, mi, ni, oi, pi, pot);
strcpy(pot,titkos);
}
return 0;
}

nb · http://fersml.blog.hu 2011.02.28. 19:10:23

@pi_zoli: jogos észrevétel szerintem.

interfeca 2011.02.28. 19:14:26

@nb: eddig 2/2-t feltört...

nb · http://fersml.blog.hu 2011.02.28. 19:15:20

@pi_zoli: interfeca volt az első, így a "hegylakó" szabály értelmében ott a pont (@interfeca: jöhetnek az adatok a könyveléshez)

De ha az említett titkos.l4-re a Tiéd (a spéci észrevétellel is keveset dob ki), akkor Neked is megajánlunk egy pontot.

nb · http://fersml.blog.hu 2011.02.28. 19:18:15

@szimih: ebben biztos vagy, hogy ebben a formátumban a 70 betű után ott van a \n? nem csak a viewer progi tette be? Megnézem valami hexa dump-al magam is, hogy pontosan mi van a fájlban...

nb · http://fersml.blog.hu 2011.02.28. 19:24:05

@nb: igen, úgy látom vannak a .fa-ban 0x0a-k, azaz LF valóban \n-ek.

nb · http://fersml.blog.hu 2011.02.28. 19:29:22

@pi_zoli: nem lenne elegánsabb az exor-ban valami ilyesmi:

pot[i] = titkos[i] ^ kulcs[ki]

jön egy +param a fgv-be, de nem használjuk a veszélyes (advanced :) cpy fgv-t?

pi_zoli 2011.02.28. 19:32:35

a titkos.l4 ben nincsen sem "nem" sem "az" sem pedig "hogy" így módosítás nélkül annyira keveset ad ki hogy nem is ad ki semmit,(ami a kitételnek eleget tesz:P) viszont egy új szó mondjuk egy a sok hibás eredményből látható Stallman vagy Richard feltétele után már nagyon szép. De ha ez még mindíg a szoftverbűnözéshez tartozik (:)) elnézést.

nb · http://fersml.blog.hu 2011.02.28. 19:34:31

@pi_zoli: igen a 4. labor emiatt problémás volt, ott hozzá kellett nyúlni alapértelmezésben a tiszta_lehet fgv.-hez (túl kicsik a minták, de 4-ből 3-ban így is jó volt :)

pi_zoli 2011.02.28. 19:35:01

ez igaz de az elegancia bevallom még nem tartozik a készségeim közzé

pi_zoli 2011.02.28. 19:38:59

@nb: tehát most mindkettőt bebuktam? :)

nb · http://fersml.blog.hu 2011.02.28. 19:53:26

@pi_zoli: mert a .l4-re hogy nyomod? Csak az átlagos szóhossz elég? Tehát még áll a +trófea neked ajánlatom továbbra is, ha megoldja valami értelmes módosítás a .l4-et

a másik esetben az elegáns megoldást várom :)

pi_zoli 2011.02.28. 19:59:22

@nb: ezzel nagyon szépen kiadja a megoldást:
double szh(const char titkos[],int titkos_meret)
{
int h=0,i;
for(i=0;i<titkos_meret;i++)
if (titkos[i]==' '||titkos[i]=='\n')
h++;
return (double)titkos_meret/h;
}

int
tiszta_lehet (const char titkos[], int titkos_meret)
{
return szh(titkos,titkos_meret)>6.0&&
szh(titkos,titkos_meret)<9.0&&strcasestr(titkos,"Richard");
}

nb · http://fersml.blog.hu 2011.02.28. 20:00:54

@pi_zoli: OK., de a "Richard" keresése nem életszerű...

pi_zoli 2011.02.28. 20:17:03

relatív kevés megoldást ad és "életszerűbb" (bár mikor először törtem a titkos.l4 et nem volt egyszerű megfejteni hogy Richard is volt benne) : double szh(const char titkos[],int titkos_meret)
{
int h=0,i;
for(i=0;i<titkos_meret;i++)
if (titkos[i]==' '||titkos[i]=='\n')
h++;
return (double)titkos_meret/h;
}

int
tiszta_lehet (const char titkos[], int titkos_meret)
{
return szh(titkos,titkos_meret)>6.0&&
szh(titkos,titkos_meret)<9.0&&strcasestr(titkos,"ha")&&strcasestr(titkos,"úgy")&&strcasestr(titkos,"mint")&&strcasestr(titkos,"jó")&&strcasestr(titkos,"mindenki");
}
ha nincs elfogadva erről lemondtam elnézést a zaklatásért

pi_zoli 2011.02.28. 20:31:43

az elegáns megoldásra:
void
exor (const char kulcs[], int kulcs_meret, char titkos[], int titkos_meret,char pot[])
{
int kulcs_index = 0;

for (int i = 0; i < titkos_meret; i++)
{

pot[i] = titkos[i] ^ kulcs[kulcs_index];
kulcs_index = (kulcs_index + 1) % kulcs_meret;

}
}

int
exor_tores (const char kulcs[], int kulcs_meret, char titkos[],int titkos_meret,char pot[])
{
exor (kulcs, kulcs_meret, titkos, titkos_meret,pot);

return tiszta_lehet(pot, titkos_meret);
}

int
main (void)
{
char kulcs[KULCS_MERET];
char titkos[MAX_TITKOS];
char pot[MAX_TITKOS];
char *p = titkos;
int olvasott_bajtok;

while ((olvasott_bajtok =
read (0, (void *) p,(p - titkos + OLVASAS_BUFFER <MAX_TITKOS) ? OLVASAS_BUFFER : titkos + MAX_TITKOS - p)))
p += olvasott_bajtok;

for (int i = 0; i < MAX_TITKOS - (p - titkos); i++)
titkos[p - titkos + i] = '\0';
for (int ii = '0'; ii <= '9'; ii++)
for (int ji = '0'; ji <= '9'; ji++)
for (int ki = '0'; ki <= '9'; ki++)
for (int li = '0'; li <= '2'; li++)
for (int mi = '0'; mi <= '9'; mi++)
for (int ni = '0'; ni <= '9'; ni++)
for (int oi = '0'; oi <= '9'; oi++)
for (int pi = '0'; pi <= '9'; pi++)
{
kulcs[0] = ii;
kulcs[1] = ji;
kulcs[2] = ki;
kulcs[3] = li;
kulcs[4] = mi;
kulcs[5] = ni;
kulcs[6] = oi;
kulcs[7] = pi;

if (exor_tores (kulcs, KULCS_MERET, titkos, p - titkos,pot))
printf
("Kulcs: [%c%c%c%c%c%c%c%c]\nTiszta szoveg: [%s]\n",
ii, ji, ki, li, mi, ni, oi, pi, pot);

}
return 0;
}
nem tudom hogy a mainbe vagy a függvényben elegánsabb lefoglalni a tárat mindenesetre így müködik

nb · http://fersml.blog.hu 2011.03.01. 14:40:36

@pi_zoli: OK., labor végén könyveltük.

szimih 2011.03.02. 20:59:53

@nb: Aki először megmondja, hogy mennyi az LZW fa ághosszainak szórása a humán 2 kromóban lévő genetikai kódnak....

Szórása: 13.369839

Pato1111 2011.03.03. 16:51:44

(ÉLES) Aki a 3. előadás vaarg-os példáját először bővíti sikerrel úgy, hogy kinyomjon %s-t is a sajatprintf().
Megoldás forráskódja:
#include <stdio.h>
#include <stdarg.h>

void
sajatprintf (char *formatumsztring, ...)
{
va_list arg_pointer;
char *p = formatumsztring, c;

va_start (arg_pointer, formatumsztring);

for (c = *p; *p; ++p)
{
if (*p == '%')
{
c = *++p;
if (c == 'd')
printf ("%d", va_arg (arg_pointer, int));
else if (c == 'f')
printf ("%f", va_arg (arg_pointer, double));
else if (c == 'c')
printf ("%c", va_arg (arg_pointer, int));
else if (c == 's')
printf ("%s", va_arg (arg_pointer, char *));
}
else
printf ("%c", *p);
}
va_end (arg_pointer);
}

int
main (void)
{
int a = 5;
double b = 5.5;
char c = '*';
char* s = "asd123*";

sajatprintf ("%d, %c, %c, %f, %d, %s\n", a, c, c, b, a, s);

return 0;
}

[Kallo@User-pc Prog]$ ./vaarg
5, *, *, 5.500000, 5, asd123*

kecske20 2011.03.03. 17:10:24

(ÉLES) Aki a 3. előadásbeli minta alapján felüldefiniál egy nem változó argumentumszámú fgv.-t (az ne vegyen részt a versenyben, aki már vaargos felülírást megnyert :)

Megoldás a putchar függvényre:

#include <stdio.h>
#include <stdarg.h>

void
sajatputchar (char *formatumsztring, ...)
{
va_list arg_pointer;
char *p = formatumsztring, c;

va_start (arg_pointer, formatumsztring);

for (c = *p; *p; ++p)
{
c = *++p;
if (c == 'c')
printf ("%c", va_arg (arg_pointer, int));
else if (c == 's')
printf ("%s", va_arg (arg_pointer, char *));
else if (c == 'd')
printf ("%d", va_arg (arg_pointer, int));
}

va_end (arg_pointer);
}

int
main (void)
{
char c = '*';
char *s = "how-to-hacker-1-2-3-4";
int q = 3;

sajatputchar ("%c, %c, %s, %d\n", c, c, s, q);
printf ("\n");

return 0;
}

kecske@Roli:~/Dokumentumok$ ./sajatputchar
**how-to-hacker-1-2-3-43

nb · http://fersml.blog.hu 2011.03.03. 20:03:08

@szimih: OK, köszi, még ellenőrzöm: folyamatban...

nb · http://fersml.blog.hu 2011.03.03. 20:08:02

@Pato1111: kicsit "izzasztóbb" példára gondoltam, mondjuk ilyesmire: www.freeweb.hu/kr-c/files/07.html#7.3. de végül is ez nem derült ki a feladatból.

Más: erre működne? sajatprintf ("%d, %c, %c, %f, %d, %s %s %s\n", a, c, c, b, a, s, "Hello, Vilag!", "Hello, Vilag!");

nb · http://fersml.blog.hu 2011.03.03. 20:09:00

@Pato1111: itt a felüldefiniálás a glibc getchar fgv-ének felüldefiniálását jelenti!

kecske20 2011.03.03. 20:17:26

rájöttem, a megoldásom nem helyes, mivel nem a printf függvényt kellett átírnom más névre...

Pato1111 2011.03.03. 20:23:00

@nb: Működik arra a példára is.
[root@User-pc Prog]# ./vaarg
5, *, *, 5.500000, 5, asd123* Hello, Vilag! Hello, Vilag!

nb · http://fersml.blog.hu 2011.03.03. 20:28:26

@kecske20: az LD_LIBRARY_PATH, LD_PRELOAD-os példa kell és ahhoz egy getchar/putchar kis teszt progi, hogy végtelen ciklus az új getchar fvg-el.

Joe89 2011.03.04. 17:12:26

Lennne egy eredményem erre: (2 kisbajnokságos feladatok)
(ÉLES) Aki először megmondja, hogy mennyi az LZW fa ághosszainak szórása a humán 2 kromóban lévő genetikai kódnak. A kódot bináris állományként dolgozd fel (előtte persze azért tömörítsd ki :), jöhet kommentben is a megoldás.

Az eredményem: szoras=11.960033

Ez az 1.8Gb-s fájlból lett ... mire lefutott a program, már füstölt a laptopom ... XD

Veyron007 2011.03.06. 17:40:16

Elkészültünk a PI elosztott verziójával.

"(ÉLES)Isten üzenete,
elosztott verzió: számolj ki a BBP algoritmussal a Pi hexadecimális kifejtésének egymilliomodik jegyétől annyi jegyet, amihez egy labornyi PC-nknek legalább 8 óra kell! ... "

A héten ki lehetne próbálni?

Mi a következőképpen gondoltuk: Egy este elindítanánk, mondjuk 18:00-20:00 körül és futhatna egészen reggelig, majd reggel rápillantanánk.

nb · http://fersml.blog.hu 2011.03.06. 17:43:26

@Veyron007: előtte javaslok a laboron egy teszt üzemet, korábban jövünk 10 perccel vagy tovább maradunk jelleggel.

Az éjszakai futáshoz kérek engedélyt, de egy vasárnap simábbnak tűnik: nappal.

A héten lefixáljuk!

Veyron007 2011.03.06. 17:48:38

@nb: Rendben, kedden 8-tól van laborom. 7:30, vagy 7:45-re be tudnék menni, ha ez Önnek is jó.
Reméljük, hogy az éjszakai futást el lehet majd intézni.

nb · http://fersml.blog.hu 2011.03.07. 18:25:00

@Veyron007: holnap nem ígérem a 8 előttet, reggel a bölcsiben, oviban kezdek...

Veyron007 2011.03.08. 09:24:43

Kliens letöltése: data.hu/get/3589047/dpih_kliens
Kliens indítása: ./dpih_kliens 172.30.8.175 2006

Veyron007 2011.03.08. 09:35:46

dpih_kliens.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

#include "dpih.h"

int szamitas;

int hoz (char *hoszt, int port, RESZFELADAT_MUTATO reszfeladat)
{
int kapu, olvasva;
struct sockaddr_in szerver;
char buffer[BUFFER_MERET];
memset ((void *) &szerver, 0, sizeof (szerver));
szerver.sin_family = AF_INET;
inet_aton (hoszt, &(szerver.sin_addr));
szerver.sin_port = htons (port);

if ((kapu = socket (PF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1)
{
perror ("socket");
exit (EXIT_FAILURE);
}

if (connect (kapu, (struct sockaddr *) &szerver, sizeof(szerver)) == -1)
{
perror ("connect");
exit (EXIT_FAILURE);
}

snprintf (buffer, BUFFER_MERET, "VISZ");
write (kapu, buffer, strlen (buffer));
szamitas = szam_beolv (kapu);

if (szamitas < 0)
{
printf ("Nincs szamitas");
return szamitas;
}

reszfeladat->allapot = szam_beolv (kapu);
reszfeladat->mettol = szamll_beolv (kapu);
reszfeladat->jegysz = szam_beolv (kapu);
reszfeladat->meddig = szamll_beolv (kapu);
close (kapu);
return szamitas;
}

int visz (char *hoszt, int port, RESZFELADAT_MUTATO reszfeladat)
{
int kapu, olvasva;
struct sockaddr_in szerver;
char buffer[BUFFER_MERET];
int fd, n;
memset ((void *) &szerver, 0, sizeof (szerver));
szerver.sin_family = AF_INET;
inet_aton (hoszt, &(szerver.sin_addr));
szerver.sin_port = htons (port);

if ((kapu = socket (PF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1)
{
perror ("socket");
exit (EXIT_FAILURE);
}

if (connect (kapu, (struct sockaddr *) &szerver, sizeof(szerver)) == -1)
{
perror ("connect");
exit (EXIT_FAILURE);
}

snprintf (buffer, BUFFER_MERET, "HOZ %d %d ", szamitas, reszfeladat->allapot);
write (kapu, buffer, strlen (buffer));
snprintf (buffer, BUFFER_MERET, "kliens_szamitas_%lld-%lld.pih",
reszfeladat->mettol, reszfeladat->meddig);
fd = open (buffer, O_RDONLY);

while ((n = read (fd, buffer, BUFFER_MERET)) > 0)
write (kapu, buffer, n);
close (fd);
close (kapu);
return szamitas;
}

int main (int argc, char **argv)
{
int port;
RESZFELADAT reszfeladat;
if (argc != 3)
{
printf ("Hasznalat: ./dpih_kliens hoszt port\n");
return -1;
}

port = atoi (argv[2]);
while ((szamitas = hoz (argv[1], port, &reszfeladat)) > 0)
{
printf ("%d-es szamitast megkezdem, %d. reszf.: %lld %lld %d\n", szamitas, reszfeladat.allapot, reszfeladat.mettol, reszfeladat.meddig, reszfeladat.jegysz);
fflush (stdout);
pi_bbp (reszfeladat.mettol, reszfeladat.meddig, reszfeladat.jegysz);
visz (argv[1], port, &reszfeladat);
}

exit (EXIT_SUCCESS);
}

Veyron007 2011.03.08. 09:36:43

pi_bbp.c

#include "pi_bbp.h"
/*
* pi_bbp.c, nbatfai@inf.unideb.hu
*
* A BBP (Bailey-Borwein-Plouffe) algoritmus a Pi hexa
* jegyeinek meghatározására.
* A program a David H. Bailey: The BBP Algorithm for Pi.
* crd.lbl.gov/~dhbailey/dhbpapers/bbp-alg.pdf
* cikkben ismertetett BBP algoritmus megvalósítása.
*
* int
* pi_bbp (long long d_kezdo, long long d_befejezo, int jegysz)
*
* A Pi hexa kifejtésének a d+1. hexa jegytől néhány jegy előállítása és
* kiírása a d_kezdo-d_befejezo.pih nevű fájlba. Az algoritmus
* jegysz jegyenként lép.
*
*/

/*
* Bináris hatványozás mod k,
* a 16^n mod k értékének kiszámítása.
*
* n a kitevő.
* k a modulus.
*/

long long int binhatmod (long long int n, long long int k)
{
long long int r = 1;
long long int t = 1;
while (t <= n)
t *= 2;
for (;;)
{
if (n >= t)
{
r = (16 * r) % k;
n = n - t;
}
t = t / 2;
if (t < 1)
break;
r = (r * r) % k;
}
return r;
}

/*
* A hivatkozott David H. Bailey: The BBP Algorithm for Pi. cikk
* alapján a {16^d Sj} részletösszeg kiszámítása, a {} a törtrészt jelöli.
*
* A d+1. hexa jegytől számoljuk a hexa jegyeket.
* A j az Sj indexe.
*/

long double Sj (long long int d, int j)
{
long double sj = 0.0;
long long int k;
for (k = 0; k <= d; ++k)
sj += (long double) binhatmod (d - k, 8 * k + j) / (long double) (8 * k + j);
for (k = d + 1; k <= 2 * d; ++k)
sj += powl (16.0, d - k) / (long double) (8 * k + j);
return sj - floorl (sj);
}

/*
* A hivatkozott David H. Bailey: The BBP Algorithm for Pi. cikk
* alapján a {16^d Pi} = {4*{16^d S1} - 2*{16^d S4} - {16^d S5} - {16^d S6}}
* kiszámítása, a {} a törtrészt jelöli.
*
* A Pi hexa kifejtésének a d+1. hexa jegytől néhány jegy előállítása és
* kiírása a d_kezdo-d_befejezo.pih nevű fájlba.
*/

int pi_bbp (long long d_kezdo, long long d_befejezo, int jegysz)
{
long double pi_hkif = 0.0;
long double s1 = 0.0;
long double s4 = 0.0;
long double s5 = 0.0;
long double s6 = 0.0;
long long int d;
int jegy, jegyh;

FILE *fp;
char buffer[1024];
snprintf (buffer, 1024, "kliens_szamitas_%lld-%lld.pih", d_kezdo, d_befejezo);

if ((fp = fopen (buffer, "w")) == NULL)
return -1;
for (d = d_kezdo; d < d_befejezo; d += jegysz)
{
pi_hkif = 0.0;
s1 = Sj (d, 1);
s4 = Sj (d, 4);
s5 = Sj (d, 5);
s6 = Sj (d, 6);
pi_hkif = 4.0 * s1 - 2.0 * s4 - s5 - s6;
pi_hkif = pi_hkif - floorl (pi_hkif);
for (jegyh = 0; jegyh < jegysz && pi_hkif != 0.0; ++jegyh)
{
jegy = (int) floorl (16.0 * pi_hkif);
pi_hkif = 16.0 * pi_hkif - floorl (16.0 * pi_hkif);
if (jegy < 10)
fprintf (fp, "%d", jegy);
else
fprintf (fp, "%c", 'A' + jegy - 10);
fflush (stdout);
}
}

fclose (fp);
return 0;
}

Pato1111 2011.03.08. 15:34:58

Lehet csúnyán félre értettem, de itt egy kisbajnokság lehetséges megoldása :)
("$ ls -l olyan_fajl")
kepfeltoltes.hu/110308/Screenshot_www.kepfeltoltes.hu_.png

nb · http://fersml.blog.hu 2011.03.08. 15:41:14

@Pato1111: nekem itt az a c forrás kéne, ami ezt a fájlt létrehozza.

Pato1111 2011.03.08. 16:46:42

@nb:
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define ENG 0000
int
main()
{
int f;
f = creat("Olyan_fajl", ENG);
return 0;
}

sency 2011.03.08. 17:07:00

@Veyron007: Mikor lesz az éles bevetése a proginak? Mennék segíteni ha lehet.

Veyron007 2011.03.08. 17:42:43

@sency: Szia, a mai nap folyamán összeszedtük a megfelelő ennyiségű programozót.

sency 2011.03.08. 20:12:45

@Veyron007: Szia! Félreérthető voltam, nem akarok én ott kotnyeleskedni, meg zavarni, csak megnézném, hogy hogyan működik ez a dolog, illetve lenne pár kérdésem is. Ugyanakkor egy csomó időt eltölteni ennyi jó programozó között jót tenne a szakmai lelkesedésemnek. :)

nb · http://fersml.blog.hu 2011.03.09. 16:48:24

@sency: társatokat idézzem: "sok jó kocka kis helyen is elfér" ha már úgyis összejövünk szervezz egy másik csapatot, aki függetlenül dolgozik, nem leszek fukar a trófeákkal :)

Painkiller19910110 2011.03.09. 20:07:06

(ÉLES) Aki először bemutatja kommentben az életjáték olyan (Javát tanítok felé lépő) továbbfejlesztését, amelyben billentyűnyomásra lehet változtatni a sejttér celláinak méretét. Megvolnék ezzel a feladattal.

imagerz.com/QFdDXFUDAVc

imagerz.com/QFdDXFUDAVQ

imagerz.com/QFdDXFUDAVU

Illetve itt van a forráskód része:

sejtablak.h-ba

#include <QtGui/qevent.h>

és

protectedbe beilleszteni ezt--->

void keyPressEvent(QKeyEvent * event);

sejtablak.cpp

void SejtAblak::keyPressEvent(QKeyEvent *event)

{

if (event->key() == Qt::Key_N) {

// Duplázzuk a cella méreteit:

this->cellaSzelesseg *= 2;

this->cellaMagassag *= 2;

setFixedSize(QSize(this->szelesseg*this->cellaSzelesseg,

this->magassag*this->cellaMagassag));

}
else if(event->key() == Qt::Key_K)
{

//Felezzük a cella méretét

this->cellaSzelesseg /=2;

this->cellaMagassag /=2;

setFixedSize(QSize(this->szelesseg*this->cellaSzelesseg,
this->magassag*this->cellaMagassag));
}
update();
}

nb · http://fersml.blog.hu 2011.03.09. 20:35:18

@Painkiller19910110: képek alapján OK, megvan a trófeák, a két eseménykezelő kódban érdemes nézni, hogy ne vigye a / túl kicsire a * túl nagyra, itt érdemes feltételt vizsgálni.

Painkiller19910110 2011.03.09. 21:59:50

Benne vagyok hogy bekerüljek a vadászok közé, most kaptam 8at meg ezelőtt 2-t a PI-re, meg 3-t az LZW fásra mikor mélységet kellett számolni.

Painkiller19910110 2011.03.09. 22:02:21

Csak halkan szeretném megjegyezni hogy a tavalyi Prog1-hez képpest sokkal motiválóbb az idei. Illetve sokkal hasznosabb is.

basecamp 2011.03.09. 23:48:46

Human genom
TCAG fa adatai:
melyseg=71
altag=13.274712
szoras=2.400518

nb · http://fersml.blog.hu 2011.03.10. 11:43:54

@basecamp: ebben 4 vagy 5 ág van, azaz N betűt nézi?

Joe89 2011.03.10. 13:45:27

Megcsináltam ezt a 4 pontosok közzűl:
(ÉLES) Aki először bemutatja kommentben az életjáték olyan (Javát tanítok felé lépő) továbbfejlesztését, amelyben billentyűnyomásra lehet gyorsítani, lassítani a sejttér életét.

Úgy oldottam meg hogy a varakozas változót megcsináltam globális változónak, és gombnyomásra változik a mérete 20-al.

A sejtablak.cpp-be beírtam ezt:
/*(ebben benne van a nagyítás, kicsinyítés is, de azt már beküldték)*/

void SejtAblak::keyPressEvent(QKeyEvent *event)
{
if (event->key() == Qt::Key_N) {
// Duplázzuk a cella méreteit:
this->cellaSzelesseg *= 2;
this->cellaMagassag *= 2;
setFixedSize(QSize(this->szelesseg*this->cellaSzelesseg,
this->magassag*this->cellaMagassag));
} else if(event->key() == Qt::Key_K) {
this->cellaSzelesseg /= 2;
this->cellaMagassag /= 2;
setFixedSize(QSize(this->szelesseg*this->cellaSzelesseg,
this->magassag*this->cellaMagassag));}
else if (event->key() == Qt::Key_Minus) {
if(this->eletjatek->varakozas<220) this->eletjatek->varakozas += 20;

} else if(event->key() == Qt::Key_Plus) {
if(this->eletjatek->varakozas>40) this->eletjatek->varakozas -= 20;
}

update();
}

A varakozas valtozó kezdőértéke egyébként 120 ahogy eredetileg is volt, és a növelés/csökkentés le van korlátozva a még működő, vagy jól látható tartományokra ...

Joe89 2011.03.10. 13:46:14

Mindjárt küldök kódot is, és képernyőképet is, bár a képen a sebesség nem igazán látszik ...

Joe89 2011.03.10. 13:52:28

Itt a progi, remélem így jó, képernyőképet inkább nem csinálok, mert ebben az esetben nincs értelme ...

dl.dropbox.com/u/13871711/gameoflife_Joe89.tar.gz

ui.: Egyébként a + és a - gombokkal lehet gyorsítani ill. lassítani a program futását ...

nb · http://fersml.blog.hu 2011.03.10. 14:00:47

@Joe89: megvan a trófea, de majd legyél elegánsabb később, pl.:

sejtszal.h

public alá
int getVarakozas();
void setVarakozas(int varakozas);

cpp-be:
void SejtSzal::setVarakozas(int varakozas)
{
this->varakozas = varakozas;
}

int SejtSzal::getVarakozas()
{
return varakozas;
}

azaz nem közvetlenül férsz hozzá a szál várakozásához (ami egy példánytag, nem globális változó, l. majd 5. ea.) hanem beállító/lekérdező módszerekkel.

Joe89 2011.03.10. 14:46:03

@nb: Igen, gondoltam h lenne elegánsabb megoldás is, de igazából még most kezdek ismerkedni a Qt-vel, meg még az objektumorientált programozásban sem tiszta minden, de majd utána olvasok a dolgoknak ...

Ui: Egyébként beteg is vagyok, szóval most inkább fekszek mint programozok, de mivel már beküldték a setjtér nagyítós kisbajnokságot, úgy gondoltam h jobb ha minél előbb megcsinálom ezt, nehogy elvigye vki előttem ...

basecamp 2011.03.10. 15:23:09

@nb: nem csak TCAG betűk vannak benne?

basecamp 2011.03.10. 15:26:59

@basecamp: már rájöttem hogy nem

basecamp 2011.03.10. 15:58:41

@nb: elkészült az új
melyseg=1375
altag=13.302725
szoras=4.563094

nb · http://fersml.blog.hu 2011.03.10. 18:22:24

@Joe89: jobbulást! Hamarosan kiteszem az 5. elúadást, az is fog segíteni.

nb · http://fersml.blog.hu 2011.03.10. 18:25:26

@basecamp: Tiéd a progpater.blog.hu/2011/02/27/a_human_genom_projekt#more2694473 4 trófeája, mert ha tévedtél, akkor együtt tévedtünk:
[norbi@sgu tcag]$ ./z <hs_alt_Hs_Celera_chr2.fa

melyseg=1375
altag=13.302725
szoras=4.563094

Rankerz 2011.03.10. 18:27:54

Lehet hogy félreértelmeztem a feladatot de erre lenne egy megoldás:

"(ÉLES) A 2. előadásban megismert CompLearn csomaggal hasonlíts össze egy
1000 karakteres ...stb"

noob.hu/2011/03/10/rand.png

nb · http://fersml.blog.hu 2011.03.10. 19:03:02

@Rankerz: ha ez volt a feladat, innen még hiányzik pár minta, nem?

(ÉLES) A 2. előadásban megismert CompLearn csomaggal hasonlíts össze egy 1000 karakteres 0,1 betűkből álló véletlen mintát (saját C programmal generáld, lásd 1. ea. megfelelő laborkártyáját), egy 500 karakterből álló pszeudóvéletlen hexa betűkből álló mintát, a Pi hexa kifejtésének két 1000 betűs hosszú darabját (a 0. és az 1.000.000 helytől) és 100 olyan 0,1-et, amit Te magad érmével dobtál ki. A hexa betűket itt kódold át 3 karakteres binárisra és vegyél hozzá az összehasonlítandókhoz néhány fehérjét, például a Javát tanítok www.tankonyvtar.hu/informatika/javat-tanitok-1-1-genomi-080904 lapján említett ember, egér és C. elegans Tubulin alpha-2 chain fehérjéjét (ezeket is átkódolhatod megfelelően). (A képet mutasd be egy kommentben, az elsőé a trófea.)

Rankerz 2011.03.10. 19:05:54

@nb: A-a,ez 3 kisbajnokságos,én a 2 kisbajnokságost csináltam ahol az "érmés" rész után már nem kell több minta.

nb · http://fersml.blog.hu 2011.03.10. 19:32:15

@Rankerz: Ja, igen:

(ÉLES) A 2. előadásban megismert CompLearn csomaggal hasonlíts össze egy 1000 karakteres 0,1 betűkből álló véletlen mintát (saját C programmal generáld, lásd 1. ea. megfelelő laborkártyáját), egy 500 karakterből álló pszeudóvéletlen hexa betűkből álló mintát, a Pi hexa kifejtésének két 1000 betűs hosszú darabját (a 0. és az 1.000.000 helytől) és 100 olyan 0,1-et, amit Te magad érmével dobtál ki. (A képet mutasd be egy kommentben, az elsőé a trófea.)

OK., az 500 véletlen hexát kinyomó kódot pls bemásolnád ide.

Rankerz 2011.03.10. 20:23:09

@nb: openssl rand -hex 500 paranccsal csináltam

Pato1111 2011.03.10. 20:29:29

Nekem ezt hiányolja valamiért a complearn.
** ERROR **: Error loading module libmod_lzmax.so.0.0.0
Ez miért lehet?

Rankerz 2011.03.10. 20:38:03

@Pato1111: szerintem annyi hogy innen lerántod a másodikat
www.complearn.org/download.html
ezt: libcomplearn-mod-lzmax-1.0.6.tar.gz
bár nálam nem volt ilyen problémo

Rankerz 2011.03.10. 20:45:04

hmm,most nézem hogy -hex 500 al 1000 karakternyi mintát készített, javítottam :

noob.hu/2011/03/10/graf.png

kecske20 2011.03.10. 22:00:45

(ÉLES) Aki először bemutatja kommentben (screenshotokkal is) a 3. ea. alapján készített saját kernelmodulját, ami megmondja, hány folyamat van.

kepfeltoltes.hu/view/110310/kernelfolyamatok_www.kepfeltoltes.hu_.png

ez a szám nem tudom mennyire reális, próba szerencse :)

Pato1111 2011.03.10. 22:02:38

Elkészítettem én is ezt a feladatot kicsit más jött ki hátha ez a megoldás :D

kepfeltoltes.hu/110310/random_www.kepfeltoltes.hu_.png

Én így csináltam a hexa random számokat:
#include <stdio.h>
#include <stdlib.h>
int
main (void)
{
int i, r;
int tomb[500];
int hexa[500];
for (i = 0; i < 500; ++i)
{
r = 1 + (int) (15.0 * rand () / (RAND_MAX + 1.0));
tomb[i] = r;
}
for (i = 0; i < 500; ++i)
{
switch (tomb[i])
{
case 0:
hexa[i] = '0';
break;
case 1:
hexa[i] = '1';
break;
case 2:
hexa[i] = '2';
break;
case 3:
hexa[i] = '3';
break;
case 4:
hexa[i] = '4';
break;
case 5:
hexa[i] = '5';
break;
case 6:
hexa[i] = '6';
break;
case 7:
hexa[i] = '7';
break;
case 8:
hexa[i] = '8';
break;
case 9:
hexa[i] = '9';
break;
case 10:
hexa[i] = 'A';
break;
case 11:
hexa[i] = 'B';
break;
case 12:
hexa[i] = 'C';
break;
case 13:
hexa[i] = 'D';
break;
case 14:
hexa[i] = 'E';
break;
case 15:
hexa[i] = 'F';
break;
}
}

for (i = 0; i < 500; ++i)
printf ("%c", hexa[i]);
printf ("\n");
return 0;
}

Painkiller19910110 2011.03.11. 10:35:54

Rossz a human genomos hisztos mert több az elsőhoöz hasonló nem oda való sor van.

nb · http://fersml.blog.hu 2011.03.11. 10:43:05

@Rankerz: OK.,de saját C progi nyomja a számokat 0-15-ig és ezeket domd át még 0-F-ig pl. a látott módon:
...
char hexa_jegyek[] = {'A', 'B', 'C', 'D', 'E', 'F'};
...
hexa_jegyek[jegy-10]
...
tehát két korábbi progi összemergeléséről van szó.

nb · http://fersml.blog.hu 2011.03.11. 10:46:12

@kecske20: szerintem jó, de magas is ellenőrizd!

top parancsban mit ír a modul kipróbálása környékén a Tasks: után vagy ps axu|wc mit ír? Ja, és c forrást bemásolnád ide pls.

Rankerz 2011.03.11. 12:24:27

@nb: nem volt benen a kiírásban hogy azt is progival kell,sajnálom)

gráf:noob.hu/2011/03/11/tree.png

hexa:

#include <stdio.h>
#include <stdlib.h>
int
main (void)
{
int i, jegy;
char hexa_jegyek[6] = {'A', 'B', 'C', 'D', 'E', 'F'};

for (i = 0; i < 500; ++i)
{
jegy = 1 + (int) (15.0 * rand () / (RAND_MAX + 1.0));
{
if (jegy>=10)
printf ("%c", hexa_jegyek[jegy-10]);
else
printf ("%d", jegy);
}
}
return 0;
}

kecske20 2011.03.11. 13:10:53

Koliban van a gépem, és más hazajöttem. Remélem jó forráskódot hoztam haza :)

#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/list.h>
long int szamol;
MODULE_DESCRIPTION ("Folyamat számláló.");
MODULE_AUTHOR ("Roli");
MODULE_LICENSE ("GPL");
static int
harmadik_init_module (void)
{
struct task_struct *task;

for_each_process (task)
{
printk ("%s, %d\n", task->comm , task->pid);
szamol += 1;
}
printk (KERN_NOTICE "A kernelben futo folyamatok szama: %li",szamol);
return 0;
}
void harmadik_exit_module (void)
{
}
module_init (harmadik_init_module);
module_exit (harmadik_exit_module);

Az első sorban említett probléma miatt leghamarabb kedden tudom ellenőrizni a Tanár úr által megadott parancsot (ps axu|wc).

Veyron007 2011.03.12. 10:30:34

# (ÉLES) Aki először bemutatja kommentben (screenshotokkal is) a 3. ea. alapján készített saját rendszerhívását, ami megmondja, hány folyamat van.

Dolgozom rajta, de a saját c programom nem tud lefordulni ugyanis az új kernelben már nincs list.h fájl.

Ezt mivel tudnám helyetesíteni?

nb · http://fersml.blog.hu 2011.03.12. 10:47:38

@Veyron007: rendszerhívás elég munkás feladat... javaslom, hogy virtualizált Linuxon izzítsd... :) kernel modulok elsőre könnyebbek.

Más: hogy érted, hogy nincs? Hiszen linux-2.6.37.3/include/linux/list.h ott van: www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.37.3.tar.bz2

Veyron007 2011.03.12. 11:00:10

@nb: Feltettem ugyanezt a kernelt, de még sincs ott...
kep.ivpicture.hu/502551.N.jpg

Rankerz 2011.03.12. 11:07:18

A 3 trófeás complearn bajnoksághoz lenne kérdésem.
"..A hexa betűket itt kódold át 3 karakteres binárisra.." nem 4 karakteresre kellene? megkérdeztem pár embert és 2^3 on helyen nem értem hogy lehetne hexa számot tárolni.

A "chain" fehérje az a ~450 karakter hosszúságú minta lenne?

nb · http://fersml.blog.hu 2011.03.12. 11:08:05

@nb: ki tudja mi van a rendszerben, gondolom csomagból tetted fel. No problemo: mezei user accountodra csomagold ki a kernelt és ott azzal dolgozz és ott megvan a list.h.

nb · http://fersml.blog.hu 2011.03.12. 11:13:55

@Rankerz: kösz, javítottam: persze 4

0-0000-tól
F-1111-ig

jobb oldalon fent van a fehérjéknél a FASTA formára mutató gomb,pl.: www.uniprot.org/uniprot/Q13748.fasta

nb · http://fersml.blog.hu 2011.03.12. 11:35:54

@Rankerz: ja, az aminosavak kódolására dolgozz ki még valami eljárást közben, a www.bioinfo.pte.hu/f2/f24.htm lapon a 2.4.3 táblázatban láthatod esetleg pl., hogy melyik betűvel melyik aminosavat jelöli a FASTA kód.

eiborn 2011.03.12. 12:08:12

Az lenne a kérdésem hogy ezek a bajnokságok még aktívak, vagy már megoldottak csak még nem lett frissítve?

(ÉLES) Aki először megmondja, hogy mennyi az LZW fa ághosszainak szórása a humán 2 kromóban lévő genetikai kódnak. A kódot bináris állományként dolgozd fel (előtte persze azért tömörítsd ki :), jöhet kommentben is a megoldás. (A szórást a Jávácska ONE-beli Hetedik Szem (javacska-one-1.0.0-projects.zip / hetedik-szem-1.0.0 / src / main / java / TudatSzamitas.java) kódja alapján fejleszd bele a korábbi kódunkba.)

(ÉLES) Aki először megmondja, hogy mennyi az LZW fa ághosszainak szórása a humán 2 kromóban lévő genetikai kódnak. A kódot tedd át 2 betűnként hexába, aztán a hexa betűkből nyomj 4 bitet betűnként, az így kapott állományt vizsgáld, jöhet kommentben is a megoldás. (A szórást a Jávácska ONE-beli Hetedik Szem (javacska-one-1.0.0-projects.zip / hetedik-szem-1.0.0 / src / main / java / TudatSzamitas.java) kódja alapján fejleszd bele a korábbi kódunkba.)

nb · http://fersml.blog.hu 2011.03.12. 12:16:31

@eiborn: a 4, 3, 2 trófeás ilyenből még a 3 trófeásat:

# (ÉLES) Aki először megmondja, hogy mennyi az LZW fa ághosszainak szórása a humán 2 kromóban lévő genetikai kódnak. A kódot tedd át 2 betűnként hexába, aztán a hexa betűkből nyomj 4 bitet betűnként, az így kapott állományt vizsgáld, jöhet kommentben is a megoldás. (A szórást a Jávácska ONE-beli Hetedik Szem (javacska-one-1.0.0-projects.zip / hetedik-szem-1.0.0 / src / main / java / TudatSzamitas.java) kódja alapján fejleszd bele a korábbi kódunkba.)

látom szabadnak, de ha most tévedek, nem kell aggódni, ebből egyet még akkor is elfogadok. (Mert akkor nyilván én tévedtem.)

kecske20 2011.03.12. 13:56:17

Tanár úr! Jó a megoldásom, vagy dolgoznom kell még rajta? (kernel modul, ami megszámolja a folyamatokat, kb 10 hozzászólással fentebb).

nb · http://fersml.blog.hu 2011.03.12. 14:00:46

@kecske20: szerintem jó, de csak Te tudod ezt megmondani: kb. ugyanannyit ír ki a top parancs vagy a ps axu a futó processzek számára, mint a Te modulod? Ha most nem bírod megnézni, nyugalom, addig másnak már nem adjuk oda, mert Neked az (ön)ellenőrzés hiányzik.

kecske20 2011.03.12. 17:01:54

Na kiharcoltam idehaza is a Linuxot:)

A modul erre a friss ubuntura 149 folyamatot ír.
A top parancs: 149-et
A ps aux | wc : 151-et.

nb · http://fersml.blog.hu 2011.03.12. 17:06:38

@kecske20: akkor ott a 4 pont.

Valszeg a ps-es parancsnál, amit utána adtál ki +1 a ps, még +1 a wc program, ami éppen fut, ezért a +2=151

Vezesselek a vadászok dobozban vagy küldesz priviben papíros könyvelési infót?

Painkiller19910110 2011.03.13. 08:33:47

A vadászat második hullámjánaka BogoMipsesével kész lennék.

imagerz.com/QFdDXFVXVVA

nb · http://fersml.blog.hu 2011.03.13. 12:38:19

@Painkiller19910110: forrást is pls, hogy megnézzem :) illetve tudjam futtatni a saját gépeimen összevetni az eredményt az enyémmel.

Painkiller19910110 2011.03.13. 14:14:18

Az előbb beküldött forráskódja.

#include<time.h>
#include<stdio.h>

int main(void)
{
clock_t ticks1, ticks2,tick;

ticks1=clock();
ticks2=ticks1;
while((ticks2/CLOCKS_PER_SEC-ticks1/CLOCKS_PER_SEC)<1)
ticks2=clock();
tick=ticks2-ticks1;
printf("Ennyiszer csinál, a proc 1 masodperc alatt abszolute semmit: %ld\nEzt megegyezik a tick/sec-el!",CLOCKS_PER_SEC);
return 0;
}

Painkiller19910110 2011.03.13. 14:28:17

Meg lenne a 2. hullám----->ÉLES) Írj olyan progit, ami kiírja a környezeti változóit, de ne legyen benne getenv fgv. hívás! (help: PP 272, XIII.4.2 char **environ vagy man environ)

imagerz.com/QFdDXFVRAV4

Forrás kódja:

#include <stdio.h>
int main(int argc, char *argv[], char *kv[])
{
int i=0;
while (kv[i] != NULL)
printf("%s\n", kv[i++]);
return 0;
}

eiborn 2011.03.14. 19:03:55

Lenne eredményem erre:

(ÉLES) Aki először megmondja, hogy mennyi az LZW fa ághosszainak szórása a humán 2 kromóban lévő genetikai kódnak. A kódot tedd át 2 betűnként hexába, aztán a hexa betűkből nyomj 4 bitet betűnként, az így kapott állományt vizsgáld, jöhet kommentben is a megoldás. (A szórást a Jávácska ONE-beli Hetedik Szem (javacska-one-1.0.0-projects.zip / hetedik-szem-1.0.0 / src / main / java / TudatSzamitas.java) kódja alapján fejleszd bele a korábbi kódunkba.)

melyseg=1121
altag=24.921395
szoras = 5.177082

eiborn 2011.03.16. 09:04:21

(ÉLES) PP 89- mintájára készíts egy saját curses alapú karakteres progit, az elsőé a trófea, jöhet screenshot kommentben, nyilván ne tök ugyanaz legyen, mint a pp 13. ábra mutatja!

imagerz.com/QFdDXA0AC1E

nb · http://fersml.blog.hu 2011.03.16. 15:48:11

@eiborn: ez OK, előzőt még ellenőrzöm. Hol könyveljelek?

eiborn 2011.03.16. 22:53:04

Mehet a vadászok közé a könyvelés.

nb · http://fersml.blog.hu 2011.03.17. 09:16:21

@eiborn: remek, nekem is ez jött ki:

[norbi@sgu tcag]$ ./z <hs_alt_Hs_Celera_chr2.fa.hex.bin

melyseg=1121
altag=24.779823
szoras=5.442720

eiborn 2011.03.17. 13:26:38

Nálam is lemaradt egy trófea :D
Korábban megcsináltam egy 2 trófeás feladatot(glibc printf függvény átírása),
tehát nekem most 3+3+2=8 trófeának kéne lennem a dobozbán :D
(bár amikor ezt szereztem, akkor még nem volt vadász doboz, akkor az nem is számít bele?)

kecske20 2011.03.21. 01:27:49

Megoldás: * (ÉLES) Linux kernel modul: bejegyzés a /proc virtuális fájlrendszerbe: progpater.blog.hu/2011/02/19/a_fajlleirok_kicsi_egesz_szamok_nem_mondod (az elsőé a trófea, jöhet a linkelt poszt kommentjében is).

root@Roli-PC:~/Dokumentumok/poc# /sbin/insmod negyedik.ko
root@Roli-PC:~/Dokumentumok/poc# dmesg
...
[11345.857115] /proc/sajat/ letrehozva
[11345.857125] /proc/sajat/taszk_stat letrehozva
root@Roli-PC:~/Dokumentumok/poc# more /proc/sajat/taszk_stat
sajat taszk lista (negyedik kernel modul)
SZAMOZAS PARANCSSOR PID FLAGS STATE POLICY
1 init 1 4202752 1 0
2 kthreadd 2 -2145345472 1 0
3 ksoftirqd/0 3 -2078236608 1 0
4 migration/0 4 -2078236608 1 1
5 watchdog/0 5 -2078236352 1 1
6 migration/1 6 -2078236608 1 1
7 ksoftirqd/1 7 -2078236608 1 0
8 watchdog/1 8 -2078236352 1 1
9 events/0 9 -2078236608 1 0
10 events/1 10 -2078236608 1 0
11 cpuset 11 -2145345472 1 0
...
root@Roli-PC:~/Dokumentumok/poc# /sbin/rmmod negyedik.ko
root@Roli-PC:~/Dokumentumok/poc# dmesg
[11451.237224] /proc/sajat/taszk_stat torolve
[11451.237231] /proc/sajat torolve

nb · http://fersml.blog.hu 2011.03.21. 08:47:01

@kecske20: spéci bár a 4 oszlopot máshogy kéne kiírni, de ott a pont(ok).

Rankerz 2011.03.21. 21:05:23

(ÉLES) A 2. előadásban megismert CompLearn csomaggal hasonlíts össze egy 1000 karakteres 0,1 betűkből álló véletlen mintát (saját C programmal generáld, lásd 1. ea. megfelelő laborkártyáját), egy 500 karakterből álló pszeudóvéletlen hexa betűkből álló mintát, a Pi hexa kifejtésének két 1000 betűs hosszú darabját (a 0. és az 1.000.000 helytől) és 100 olyan 0,1-et, amit Te magad érmével dobtál ki. A hexa betűket itt kódold át 4 karakteres binárisra és vegyél hozzá az összehasonlítandókhoz néhány fehérjét, például a Javát tanítok www.tankonyvtar.hu/informatika/javat-tanitok-1-1-genomi-080904 lapján említett ember, egér és C. elegans Tubulin alpha-2 chain fehérjéjét (ezeket is átkódolhatod megfelelően). (A képet mutasd be egy kommentben, az elsőé a trófea.)

Eredmény(az egér és ember chain közelségéből valamint a fonálféreg ezekhez képest paramétereiből következtetek hogy jónak kell lennie)

noob.hu/2011/03/21/comp3.png

A FASTA kód aminosavvá átalakítása

#include <stdio.h>
main()
{
int i;
char s;

while (s!=EOF)
{
s=getchar();
{
switch(s)
{
case 'A':
printf("Ala");
break;
case 'B':
printf("Asn");
break;
case 'C':
printf("Cys");
break;
case 'D':
printf("Asp");
break;
case 'E':
printf("Glu");
break;
case 'F':
printf("Phe");
break;
case 'G':
printf("Gly");
break;
case 'H':
printf("His");
break;
case 'I':
printf("Ile");
break;
case 'K':
printf("Lys");
break;
case 'L':
printf("Leu");
break;
case 'M':
printf("Met");
break;
case 'N':
printf("Asn");
break;
case 'P':
printf("Pro");
break;
case 'Q':
printf("Gln");
break;
case 'R':
printf("Arg");
break;
case 'S':
printf("Ser");
break;
case 'T':
printf("Thr");
break;
case 'V':
printf("Val");
break;
case 'W':
printf("Trp");
break;
case 'Y':
printf("Tyr");
break;
case 'Z':
printf("Glu");
break;
}
}
}
}

nb · http://fersml.blog.hu 2011.03.22. 15:24:16

@Rankerz: hogy van itt az átkódolás? Olyan 20-féle aminosavar kéne pl. a g.c "inverzével"

pl.: P = Phe = TTT
progpater.blog.hu/2011/03/06/az_otodik_labor#more2714667

és ezt a korábbi g.c-vel 2 T,C,A,G betűnként hexába, vagy Te hogy nyomtad?

Rankerz 2011.03.22. 15:33:01

@nb: én úgy értelmeztem hogy csak a fasta kód aminosav kódolás a lényeg,nem sejtettem hogy ezt még tcag betűkbe és azt még hexába is tovább kell. a sima aminosavakból csináltam a distmatrixot. elég komplex :D

nb · http://fersml.blog.hu 2011.03.22. 15:36:44

@Rankerz: nem kell, Rád van bízva a minták kódolása, de jobb azonos betűket tartalmazókra konv és úgy összehas.

Rankerz 2011.03.22. 15:42:16

@nb: ha rám van bízva akkor elfogadom az eddigi megoldásomat :D persze ha ez így nem ér 3 trófeát akkor továbbdolgozok a projecten

Rankerz 2011.03.22. 18:00:52

Nos a chain hexába átdobva:

noob.hu/2011/03/22/hexachain.png

És még ezt upgradelve a hexát átdobva binárisba:

noob.hu/2011/03/22/binchain.png

Remélem megfelel=)

nb · http://fersml.blog.hu 2011.03.23. 14:22:39

@Rankerz: OK., látszik, hogy inkább egér vagyok, mint fonalféreg :)

#Gerzson 2011.03.28. 01:03:47

(ÉLES) Aki először bemutatja kommentben az életjáték olyan (Javát tanítok felé lépő) továbbfejlesztését, amelyben egérrel (kattintás és vonszolás) lehet ki/bakapcsolni cellákat.

sejtablak.h

protected:

void mousePressEvent(QMouseEvent*);
void mouseMoveEvent(QMouseEvent* event);

sejtablak.cpp

void SejtAblak::mousePressEvent(QMouseEvent* event) {

int xkor = event->x()/cellaSzelesseg;
int ykor = event->y()/cellaMagassag;
//bal egérgombra bekapcsol
if (event->buttons() & Qt::LeftButton){
racsok[racsIndex][ykor][xkor]=ELO;
}
//jobb egérgombra kikapcsol
else if (event->buttons() & Qt::RightButton){
racsok[racsIndex][ykor][xkor]=HALOTT;
}
update();
}

void SejtAblak::mouseMoveEvent(QMouseEvent* event) {

int xkor = event->x()/cellaSzelesseg;
int ykor = event->y()/cellaMagassag;
if (event->buttons() & Qt::LeftButton){
racsok[racsIndex][ykor][xkor]=ELO;
}
else if (event->buttons() & Qt::RightButton){
racsok[racsIndex][ykor][xkor]=HALOTT;
}
update();
}

nb · http://fersml.blog.hu 2011.03.29. 12:02:23

@#Gerzson: ugye a Gerzson néven Te voltál eddig 5 ponttal a Vadászok dobozban?

vlacka 2011.03.29. 16:23:02

(ÉLES) Gyorsítsd duplájára a labor EXOR törő kódját: progpater.blog.hu/2011/02/15/felvetelt_hirdet_a_cia (egyszer hívd az exor fgv-t, hogy ez elég legyen, a titkos mellett használj egy második buffert), (az elsőé a trófea, jöhet a linkelt poszt kommentjében is).

#define MAX_TITKOS 4096
#define OLVASAS_BUFFER 256
#define KULCS_MERET 8
#define _GNU_SOURCE

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int tiszta_lehet (const char titkos[], int titkos_meret)
{
return strcasestr(titkos, "hogy") &&
strcasestr(titkos, "nem") &&
strcasestr(titkos, "az") &&
strcasestr(titkos, "ha");

}

void exor (const char kulcs[], int kulcs_meret, char titkos[], int titkos_meret)
{
int kulcs_index = 0;

int i;
for (i=0; i<titkos_meret; i++)
{
titkos[i] = titkos[i] ^ kulcs[kulcs_index];
kulcs_index = (kulcs_index+1)%kulcs_meret;
}
}

int exor_tores (const char kulcs[], int kulcs_meret, char titkos[], int titkos_meret)
{
exor (kulcs, kulcs_meret, titkos, titkos_meret);

return tiszta_lehet(titkos, titkos_meret);
}

int main(int argc, char *argv[])
{
char kulcs[KULCS_MERET];
char titkos[MAX_TITKOS];
char dekodolt[MAX_TITKOS];
char *p = titkos;
int olvasott_bajtok;

// titkos fajl pufferelt berantasa
while ((olvasott_bajtok =
read(0, (void *)p,
(p - titkos + OLVASAS_BUFFER <
MAX_TITKOS) ? OLVASAS_BUFFER : titkos + MAX_TITKOS - p)))
p+=olvasott_bajtok;

// maradek hely nullazasa a titkos bufferben
int i;
for (i=0; i<MAX_TITKOS - (p - titkos); i++)
titkos[p-titkos+i] = '\0';

int ii,ji,ki,li,mi,ni,oi,pi;
// osszes kulcs eloallitasa
for (ii='0'; ii<= '9'; ii++)
for (ji='0'; ji<= '9'; ji++)
for (ki='0'; ki<= '9'; ki++)
for (li='0'; li<= '9'; li++)
for (mi='0'; mi<= '9'; mi++)
for (ni='0'; ni<= '9'; ni++)
for (oi='0'; oi<= '9'; oi++)
for (pi='0'; pi<= '9'; pi++)
{
kulcs[0] = ii;
kulcs[1] = ji;
kulcs[2] = ki;
kulcs[3] = li;
kulcs[4] = mi;
kulcs[5] = ni;
kulcs[6] = oi;
kulcs[7] = pi;

for (i=0; i<MAX_TITKOS; i++)
{
dekodolt[i] = titkos[i];
}

if (exor_tores(kulcs, KULCS_MERET, dekodolt, p - dekodolt))
printf("Kulcs: [%c%c%c%c%c%c%c%c]\nTiszta szoveg: [%s]\n",
ii,ji,ki,li,mi,ni,oi,pi,dekodolt);

}

return 0;
}

nb · http://fersml.blog.hu 2011.03.30. 09:32:50

@vlacka: jó lesz, de kérek képet is arról, amikor Te teszteled.

Illetve (lásd még komment vége majd) a sok

for (i=0; i<MAX_TITKOS; i++)
{
dekodolt[i] = titkos[i];
}

ki lehet spórolni, ha

dekodolt-at csak simán átadod

if (exor_tores(kulcs, KULCS_MERET, titkos, p - titkos, dekodolt))

az exot_tores tovább adja az exornak, ahol
dekodolt[i] = titkos[i] ^ kulcs[kulcs_index];

-----
(A p - dekodolt miatt egyáltalán működött, amit most küldtél... ?)

vlacka 2011.03.30. 14:47:37

(ÉLES) Gyorsítsd duplájára a labor EXOR törő kódját: progpater.blog.hu/2011/02/15/felvetelt_hirdet_a_cia (egyszer hívd az exor fgv-t, hogy ez elég legyen, a titkos mellett használj egy második buffert), (az elsőé a trófea, jöhet a linkelt poszt kommentjében is).

#define MAX_TITKOS 4096
#define OLVASAS_BUFFER 256
#define KULCS_MERET 8
#define _GNU_SOURCE

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>

int tiszta_lehet (const char titkos[], int titkos_meret)
{
return strcasestr(titkos, "hogy") &&
strcasestr(titkos, "nem") &&
strcasestr(titkos, "az") &&
strcasestr(titkos, "ha");
}

void exor (const char kulcs[], int kulcs_meret, char titkos[], int titkos_meret, char dekodolt[])
{
int kulcs_index = 0;

int i;
for (i=0; i<titkos_meret; i++)
{
dekodolt[i] = titkos[i] ^ kulcs[kulcs_index];
kulcs_index = (kulcs_index+1)%kulcs_meret;
}
}

int exor_tores (const char kulcs[], int kulcs_meret, char titkos[], int titkos_meret, char dekodolt[])
{
exor (kulcs, kulcs_meret, titkos, titkos_meret, dekodolt);

return tiszta_lehet(dekodolt, titkos_meret);
}

int main(int argc, char *argv[])
{
char kulcs[KULCS_MERET];
char titkos[MAX_TITKOS];
char dekodolt[MAX_TITKOS];
char *p = titkos;
int olvasott_bajtok;

// titkos fajl pufferelt berantasa
while ((olvasott_bajtok =
read(0, (void *)p,
(p - titkos + OLVASAS_BUFFER <
MAX_TITKOS) ? OLVASAS_BUFFER : titkos + MAX_TITKOS - p)))
p+=olvasott_bajtok;

// maradek hely nullazasa a titkos bufferben
int i;
for (i=0; i<MAX_TITKOS - (p - titkos); i++)
titkos[p-titkos+i] = '\0';

int ii,ji,ki,li,mi,ni,oi,pi;
// osszes kulcs eloallitasa
for (ii='0'; ii<= '9'; ii++)
for (ji='0'; ji<= '9'; ji++)
for (ki='0'; ki<= '9'; ki++)
for (li='0'; li<= '9'; li++)
for (mi='0'; mi<= '9'; mi++)
for (ni='0'; ni<= '9'; ni++)
for (oi='0'; oi<= '9'; oi++)
for (pi='0'; pi<= '9'; pi++)
{
kulcs[0] = ii;
kulcs[1] = ji;
kulcs[2] = ki;
kulcs[3] = li;
kulcs[4] = mi;
kulcs[5] = ni;
kulcs[6] = oi;
kulcs[7] = pi;

if (exor_tores(kulcs, KULCS_MERET, titkos, p - titkos, dekodolt))
printf("Kulcs: [%c%c%c%c%c%c%c%c]\nTiszta szoveg: [%s]\n",
ii,ji,ki,li,mi,ni,oi,pi,dekodolt);

}

return 0;
}

nb · http://fersml.blog.hu 2011.03.30. 14:50:25

@vlacka: OK., de hol a kép a tesztelésről?

vlacka 2011.03.30. 16:11:26

@nb: A képekre még kicsit várni kell, mert most csak windows-ban tudom tesztelni, és így nekem kell megírnom az strcasestr() függvényt is.

vlacka 2011.03.30. 17:52:15

@nb: remélem ennyi kép elég lesz

nb · http://fersml.blog.hu 2011.04.01. 14:01:14

@vlacka: adtam a pontot, de Linux alatt kéne majd nyomni és elé írta a time parancs mondta volna meg, mennyit is gyorsult...

eiborn 2011.04.01. 18:24:46

(ÉLES) Mandelbrot halmaz: a 4. előadás Qt-s példáját fejleszd tovább a Javát tanítok példájának megfelelően, azaz egérrel lehessen tartományt kijelölni nagyításra! (Az elsőé a trófea, jöhet a linkelt poszt kommentjében is.)

imagerz.com/QFdDXA9VBgI

imagerz.com/QFdDXA9VBgM

imagerz.com/QFdDXA9VBgA

Mivel még senki sem küldte el kommentbe(vagyis én nem találtam ilyet),és még aktív a bajnokság ezért gondoltam én most elküldöm,hátha ér valamit XD

vlacka 2011.04.01. 18:28:24

(ÉLES) Mandelbrot halmaz: a 4. előadás Qt-s példáját fejleszd tovább a Javát tanítok példájának megfelelően, azaz egérrel lehessen tartományt kijelölni nagyításra! (Az elsőé a trófea, jöhet a linkelt poszt kommentjében is.)

Csak a módosításokat írom le, mert egyébként hosszú lenne.

A main.cpp fájlban csak 1db FrakAblakot csináltam.

A FrakSzal.h kiegészítve a következőkkel:

public:
void mousePressEvent(QMouseEvent *);
void mouseReleaseEvent(QMouseEvent *);
void novelIteraciosHatar();
protected:
// A nagyítandó terület bal felső sarka
int x, y;
// A nagyítandó terület szélessége és magassága
int mx, my;

A FrakSzal.cpp kiegészítve a következőkkel:

void FrakSzal::mousePressEvent(QMouseEvent *evt)
{
x = evt->x();
y = evt->y();
}

void FrakSzal::novelIteraciosHatar()
{
iteraciosHatar+=256;
this->run();
}

void FrakSzal::mouseReleaseEvent(QMouseEvent *evt)
{
double dx = (b-a)/szelesseg;
double dy = (d-c)/magassag;
mx = evt->x()-x;
my = evt->y()-y;

a = a+x*dx;
b = a+x*dx+mx*dx;
c = d-y*dy-my*dy;
d = d-y*dy;

magassag = (int)(szelesseg * ((d-c)/(b-a)));

frakAblak->setFixedSize(QSize(szelesseg, magassag));

this->run();
}

A FrakAblak.h kiegészítve a következőkkel:

public:
void mousePressEvent(QMouseEvent *);
void mouseReleaseEvent(QMouseEvent *);
void keyPressEvent(QKeyEvent *);

A FrakAblak.cpp kiegészítve a következőkkel:

void FrakAblak::mousePressEvent(QMouseEvent *evt)
{
evt->accept();

mandelbrot->mousePressEvent(evt);
}

void FrakAblak::mouseReleaseEvent(QMouseEvent * evt)
{
evt->accept();

mandelbrot->mouseReleaseEvent(evt);
}

void FrakAblak::keyPressEvent(QKeyEvent *evt)
{
evt->accept();
if ( evt->key() == 'n' || evt->key() == 'N' )
mandelbrot->novelIteraciosHatar();
}

Nem a legjobb megoldás, de működik :)

nb · http://fersml.blog.hu 2011.04.02. 13:52:03

@eiborn: jóváírva, de majd forrást is kérek, hogy belenézhessek.

nb · http://fersml.blog.hu 2011.04.02. 13:53:22

@vlacka: sajnos kicsit lekéstél, csak belepillantva: a szálat objektumot nem csináltad újra a runolás előtt.

vlacka 2011.04.04. 15:59:58

(ÉLES) Mandelbrot halmaz: a 4. előadás Qt-s példáját fejleszd tovább a Javát tanítok példájának megfelelően, azaz grafikusan (off vagy on)line ábrázolja a halmazon az iterációkat! (Az elsőé a trófea, jöhet a linkelt poszt kommentjében is.)

Képek:
kepfeltoltes.hu/110404/n_vtelen1_www.kepfeltoltes.hu_.jpg
kepfeltoltes.hu/110404/n_vtelen2_www.kepfeltoltes.hu_.jpg
kepfeltoltes.hu/110404/n_vtelen3_www.kepfeltoltes.hu_.jpg

kecske20 2011.04.05. 22:18:24

(ÉLES) PP 89- mintájára készíts egy saját curses alapú karakteres progit, az elsőé a trófea, jöhet screenshot kommentben, nyilván ne tök ugyanaz legyen, mint a pp 13. ábra mutatja!

Én a /proc/meminfo fájlból kértem le a progiban az adatokak.

imagerz.com/QFdDXAgHUVA

nb · http://fersml.blog.hu 2011.04.07. 12:00:28

@kecske20: de azért ennyire szimpla se legyen, PP 101 sokkal komplexebb.

vlacka 2011.04.11. 11:42:59

(ÉLES) Aki először bemutatja kommentben az életjáték olyan (Javát tanítok felé lépő) továbbfejlesztését, amelyben egérrel (kattintás és vonszolás) lehet ki/bakapcsolni cellákat.

kepfeltoltes.hu/110411/1251019713n_vtelen1_www.kepfeltoltes.hu_.jpg
kepfeltoltes.hu/110411/n_vtelen2_www.kepfeltoltes.hu_.jpg

A képekből nem derül ki konkrétan hogy működik, de higgyük el. :D

#Gerzson 2011.04.11. 14:46:56

(ÉLES) Aki először bemutatja kommentben (screenshotokkal is) a 3. ea. alapján készített saját rendszerhívását, ami megmondja, hány folyamat van.

img703.imageshack.us/img703/8140/kijells016.png

kecske20 2011.04.12. 15:07:46

@nb:

imagerz.com/QFdDXAkFClQ

Elég ennyi adat, vagy írjak még bele valamit?

nb · http://fersml.blog.hu 2011.04.15. 14:28:02

@vlacka: forrást is pls. Ez nem Java?

nb · http://fersml.blog.hu 2011.04.15. 14:31:03

@#Gerzson: ez nem a /proc-ból szedi ki? A rendszerhívásosnál a feladat lényege a Linux PCB láncolt listájában ügyködni a listás makrókkal... de annyi pontot adok rá amennyis a top-os feladatok+1, mert ez így inkább szimpla állománykezelés.

nb · http://fersml.blog.hu 2011.04.15. 14:33:25

@kecske20: ez már spéci! (Pontoztam már? Mi a feladat neve? Bocs., kihagytam pár napot, nem vagyok szinkronban most magam sem a játékkal :)

kecske20 2011.04.15. 16:16:47

@nb:

A feladat neve:
(ÉLES) PP 89- mintájára készíts egy saját curses alapú karakteres progit, az elsőé a trófea, jöhet screenshot kommentben, nyilván ne tök ugyanaz legyen, mint a pp 13. ábra mutatja!

A pontokat viszont még nem kaptam meg.

Obsyd 2011.04.28. 12:50:18

(ÉLES) Aki először bemutatja kommentben (screenshotokkal is) a 3. ea. alapján készített saját rendszerhívását, ami megmondja, hány folyamat van.

www.flickr.com/photos/45595860@N03/5663667021/in/photostream

borokcs 2011.05.08. 21:25:29

Jóestét Tanárúr

(ÉLES) Aki először bemutatja kommentben az életjáték olyan (Javát tanítok felé lépő) továbbfejlesztését, amelyben egérrel (kattintás és vonszolás) lehet ki/bakapcsolni cellákat.

Ezt a feladatot sikerült részben megoldanom, kattintásra beszúr egy "siklót" az egér pozícíóra.

data.hu/get/3806091/gameoflife.tar.gz

A sejtablak.cpp-be raktam be a mousePressEvent -et.

Tudom hogy ez nem a kész feladat, de nekem csak 2-3 pontra lenne szükségem, és reméltem hogy ez a program talán elég hozzá.

borokcs 2011.05.15. 16:13:47

A blogomra kiraktam a képet,hogy kattintásra beszúr egy "siklót" az egér pozícíóra.
gazdinfodebrecen.blogspot.com/
süti beállítások módosítása