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/tr902661233

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.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