<b>Programátorské cvičení (výsledky)</b>

<HTML>Uz jsem obdrzel od 5ti lidi reseni, kazdy to podle zadani pochopil a splnil coz me tesi. Az si tak rikam ze dalsi cviceni pokud bude dam o neco slozitejsi.
Testovat to za podminek kdy kazdy vypocet trva 0.023, 0.0124 atp povazuju za neobjektivni.. testuji to za podminek:
chars = "abcde"
min = 1
max = 8
coz uz jsou jednotky v radech sekund

peta: Tvuj postup vzejde z vysledku na ktery se doufam podivame vsichni, zadal jsem vsechny aby sem nic o reseni nepsali.

Ani jsem necekal ucast 5ti lidi abych pravdu rekl :) Ale vsechny prozatimni zdroje jsem peclive prostudoval a hodne veci jsem se z nich naucil (kazdy premysli jinak a kazdy z tech postupu je novy smer pri reseni dalsich algoritmu)</HTML>
Richard
Tak, ja jsem to nepochopil :) Kdyz to nenapises cesky, tak se ani nediv. Jsi mozna chodil do informatiky a znas informaticke terminy a vselijake pojmy, ale nekteri treba neznaji. Tim padem, pokud to udelam, udelam to tak, jak jsem to pochopil. Ale mam dovcu, tak mne to ted neboli, takze po terminu, zrejme :)
Mam spousstu jinych projektu, ktere treba dokoncit.
<HTML>Vzdyt to je cesky.. pouzil jsem jen slova bruteforce, callback a konstruktor.
Nevim v cem by mohl byt problem :/ Je divny ze znas pointer ale tyhle slova ne? (btw pointer v php neni, je tam jen odkaz ;)</HTML>
=peta=
Tos tak abych rekl pravdu tak z tveho vysvetleni problemu bych nepochopil o co vlastne ma jit.... Prvni zadani mi rpislo teda podstatne srozumitelnejsi :)

Ja jsem mel taky plno rozdelanych projektu .... a zase v nich cile pokracuju (nez zta hodinu pojedu pryc na dovolenou :) ) ... napsat takovou tridu nezabere moc casu ...
2Peta:
Jak psal Freeze - moc času to nezabere. Hlavní je mít algoritmus a pak vědět, jak ho v php popsat. Když nemáš algoritmus, nemá cenu nad tím seďět a naopak když víš jak, tak to hrubě naprogramuješ za hodinku.
Richard:
teď mě tak napadá: jaký máš web? Začínám být zvědavý, jak jsme dopadli a zjišťuju, že nevím, jaký máš web, abych si potom mohl pročíst srovnání. Vím, že je to asi blbý, ale já to vážně nevím... :P

"kazdy premysli jinak a kazdy z tech postupu je novy smer pri reseni dalsich algoritmu"
Nevím, jestli jsem tak omezenej, nebo jo, ale ať přemýšlím jak přemýšlím, tak mě nenapadá žádné jiné řešení, než to, které jsem ti poslal. Tak nevím, kudy se mohli ubírat myšlenkové proudy ostatních, když to, jak píšeš, máme tak "odlišné"(sorry - lepší slovo mě zrovna nenapadá) ... :)
Freeze (dreamer.xf.cz)
Mno, ja to prave mam sesmolene, ale ne na tomto PC :) A ze by se mi to chtelo psat znova, to ani ne.

Richard (moderátor)
oki, tak jinak...

"Napiste tridu (php4/5) s nazvem "bruteforce" "
Co je to trida?

"ktera provadi (jak jeji nazev napovida) kombinace vsech znaku v retezci"
tak to ani nahodou. Brute force je hruba sila. Rekneme, ze jsem nikdy nedelal do kryptovacich algoritmu a tim padem mi to nic nerika.
Neco podobneho se mi stalo posledne ve skole, kdy jsem dostal na pisemce ukol sestavi el. obvod pro neco s expozici 5s. Ale protoze nedelam do fotaku ani kamer, tak mne nenapadla spojitost expozice-foto, to uz bych pak vedel. Spoluzkousejici nerekli nic, ucitel odbeh, takze jsem tam neco sesmolil, ale bylo to samozrejme tak, jak jsem to pochopil ja.
Pak tam byl ustni pokec a az tam mi doslo, co se tim myslelo. To je tak, kdyz je zadani, jen pro zasvecene. Tj. neuplne a chybne.

"
Konstruktor tridy bude mit 4 parametry:
1. retezec (ukazatel na callbackovou funkci)
2. retezec znaku ktere se budou kombinovat (napr. "abcdef12345")
3. cislo urcujici minimalni pocet znaku v kombinovanem retezci
4. cislo urcujici maximalni pocet znaku v kombinovanem retezci
"
Co je konstruktor tridy?
jestlize ma funkce 4 parametry, vypada to takto: funkce(a,b,c,d)
Jenze, jestlize chces kombinovat nejake znaky, potrebujes vedet informaci pro stav nynejsi:
- posl. kombinaci + pozice posl. znaku z poli pouzitych znaku pro kombinace
- nebo potrebujes souradnici X, Y (x = delka retezce, y = cislo znaku, ktery byl pouzit)
a vzhledem k tomu, ze tyto 2 veci neuvadis, je treba je do funkce zabudovat jako global nebo je pocitat pomocnou funkci

"
kontruktor sam spusti proces kombinaci a kazdy vysledek posle do uzivatelske funkce (prvni parametr konstruktoru) spolu s poctem jiz probehnutych kombinaci. Vlastni fce. ma tedy parametry:
callback($kombinovany_retezec, $pocet_interakci)
"
A tohle uz je pro mne uplna spanelska vesnice :)
Teda Peto? Ja zadani taky nejak na stopro nerozumim, ale je mi jasne o co jde. A pojmy, ktere Richard uvadi jsou bezne vyrazy pouzivane i v PHP. Z cehoz z nych hlav vypliva, ze neumis programovat v PHP. Respektive ses jeste nedostal ke kapitole objektoveho programovani.

Jinak nikdo ti nerikal, abys tuto tridu udelal. Pokud se na to necitis, nebo nevis o co jde, tak to nedelej. Nikdo ti neurve hlavu a nebude se ti vysmivat.

Ja napriklad nad tim nedelam, pac se mi zrovna nechce. Nerikam, ze to neumim, i kdyz rikat to takhle neni zrovna dobry. Dokud to nekdo neudela, tak si neni jisty, ze to umi ;) Nasel jsem jak pracuje algoritmus, takze vim jak to sesmolit. Jen se mi proste nechce.
<HTML>Objektove programovani je mimo jine predevsim o tom premyslet o necem driv nez to zacnu delat.
Tzn. neprogramuje se radek-premysleni-radek-premysleni-radek ale premysleni-radek-radek-radek-radek (alespon na zacatku)

Potreboval jsem vytvorit takovy model, ktery ve vysledku je vzdy stejny at to dela kdokoliv jakymkoliv zpusobem (neboli jsem vsem urcil co maji k dispozici a jak bude vypadat vysledek), ale jejich postup a reseni je jen jejich vec.

Zjedusene kdyz ti reknu napis funkci ktera vypise cislo, bude se jmenovat "vypis($cislo)" a bude mit 1 parametr ve kterem je cislo, tak jeden v te funkci pouzije prikaz na vypsani "echo" a druhy treba zase "printf". Ja ale vzdy umim pouzit funkci "vypis()" i kdyz kazda pracuje jinak.

Zadani vychazi z uplnych zakladu OOP a nejsem si jisty jestli by to bylo jednodussi bez neho. Nekteri si o OOP neco malinko precetli aby vedeli oc jde nez to zacali delat a nemyslim ze to bylo vic jak 10min casu.</HTML>
pokud vám to stačí do řádu 36, dá se s výhodou použít jádro:

/*
kod smazan
Richard
*/

zbytek je omáčka a "kopáčská práce". ;-)
Tomík (tom.czweb.org)
Ja taky rikam, ze kdepak. Jestli, po dovce. Mam daleko zajimavejsi veci.
http://peter-mlich.wz.cz/x/osm.htm


Richard (moderátor)
'jeden v te funkci pouzije prikaz na vypsani "echo" a druhy treba zase "printf"'
Nebo to das ukladat do promenne a vypises po 100 vysledcich, abys zbytecne nebrzdil script.

/*
kod smazan
Richard
*/
Tak to je nejlepsi :) Nevidim duvod mazat kod, ikdyz v zadani je, ze to tu nechces. Fakt skvele forum :)
<HTML>Me to jako duvod staci.
Budto to nekdo dela nebo nedela, zvladne nebo nezvladne... ale davat sem "jadro" ted kdyz lidi jeste posilaji reseni nebo na tom pracuji je nesmysl.</HTML>
Omlouvám se, nechtěl jsem nic pokazit. Jenom jsem dělal na podobném problému, tak jsem jádro zkopíroval.
(asi dobrá cesta, jinak by to tu nechal. ;-) )
...mě to jenom trochu připadá jako:
"ták děti, dneska si zkusíme, jak se dělají..."
a to se mi trochu příčí... no jo, příště budu mlčet.
Fučík.
2Marek z Markova:
No tak trochu možná ... ale podle toho co Richard psal, že to dělal taky a ne jenom vyhlasil ... :) tak to asi bere jenom jako 'trénink' :) Ja to beru jenom jako zajímavý podnět ... proste jen tak for fun ... :)
..ale jo, já to beru, jenom, že je fakt, že když už nic celého nestvořím, tak mám mlčet...
Zdar ... muz mit jeste dotaz? :) Kdy a kde presne (nejlepe link :-D ) budou zverejneny vysledky cviceni ? :) Nechcu vypadat jako nedockavy, ale aspon takhle posunu tohle tema navrch ... :-D
<HTML>Dnes vecer by to melo byt hotove</HTML>
<HTML>Takze zde jsou vysledky:


<table>
<tr><td width="100">Jméno</td><td width="100">Čas v sek.</td><td>Zdroj</td></tr>
<tr><td>Jan Friesse</td><td>2.785</td><td><a href="http://master.webzdarma.cz/bruteforce/jan_friesse.phps">jan_friesse.phps</a></td></tr>
<tr><td>Tonik</td><td>3.324</td><td><a href="http://master.webzdarma.cz/bruteforce/tonik.phps">tonik.phps</a></td></tr>
<tr><td>Freeze</td><td>4.003</td><td><a href="http://master.webzdarma.cz/bruteforce/freeze.phps">freeze.phps</a></td></tr>
<tr><td>Tom</td><td>4.853</td><td><a href="http://master.webzdarma.cz/bruteforce/tom.phps">tom.phps</a></td></tr>
<tr><td>Non_E</td><td>6.830</td><td><a href="http://master.webzdarma.cz/bruteforce/non_e.phps">non_e.phps</a></td></tr>
<tr><td>Richard</td><td>11.171</td><td><a href="http://master.webzdarma.cz/bruteforce/richard.phps">richard.phps</a></td></tr>
</table>

Jen dodam ze vysledek od Non_E je bohuzel funkcni jen do omezenych naroku.. pak dojde alokovana pamet, cili tento kod nepovazuji za dostatecne funkcni (byl jiz jednou upravovan).

Temto bych chtel take podekovat ze se zucastnili, dokazali nalezt reseni a zpracovali jej do podoby dle zadani.</HTML>
Tak jak tak na to koukám, tak suverénně nejsložitější kód mám já, takže se celkem divím, že nemám nejpomalejší kód ;)

Jenom bych se zeptal: jaké byly testovací parametry (string, min, max) ?
Heh ... relativne velke rozdily :) i kdyz uz to tu padlo tak me prekvapuje ze kazdy to delal trochu jinak :) trochu prijemne me prekvapilo ze moje 'metoda' nebyla nejpomalejsi :-D
<HTML>Mno :D
Ja zase nechapu jaktoze je moje nejpomalejsi kdyz pocet cyklu je mensi nez v nekolika jinych kodech :/

Parametry:
string: abcde
min: 1
max: 8
callback bezel naprazdno (tzn. nic neslo pri testovani casu na vystup)</HTML>
Hezké kódy. Kdy můžeme čekat další programátorské cvičení?
<HTML>To ted nedokazu rict, skoda ze vetsina zrejme pouziva php4 jak se zda :/</HTML>
U sebe mam PHP5. Ale k vzhledem k tomu, ze zde je PHP4, tak delam kvuli kompatibilite skripty pro ctverkovou verzi.