vo vetsi kravine jsem neslysel... fakt ze se tady kvuli tajny cokolade nepretrhnu...
Richard - podle mě (opakuji, nečetl jsem podrobně protože to bylo napsané dlouze a chaoticky) jde o to mít funkci vracející náhodnou číslici s tím, že některé mají větší šanci na výskyt než jiné. Není potřeba znát počet volání, protože procento je pořád procento.
Když má třeba číslice 8 mít dvakrát větší šanci na vrácení než číslice všechny ostatní číslice, pak při miliónu volání budou všechny číslice vráceny 90909krát, zatímco číslice '8' 181818krát (dvojnásobek). Při polovičním počtu volání ta čísla budou poloviční.
No tohle je ale popis toho jak by to mělo fungovat. Jestli toho lze docílit a hlavně jak, to nevím, nemám čas a ani volnou mozkovou kapacitu se nad tím hlouběji zamýšlet :D
Možná jsi to "to je ale nesmyslne" myslel právě tak že toho nelze docílit.
<HTML>Tom: jedna vec je sance a druha procenta :)
procenta jsou presna, sance je bud ano nebo ne
on tam chtel ale procenta</HTML>
Richard: Percentá určujú pravdepodobnosť, s akou to číslo vyberieme a nie že v danej postupnosti vybraných čísel bude to číslo presne toľkokrát vybrané. Podobne ako pri hode kockou je pravdepodobnosť, že padne číslo deliteľné dvoma 50%. Nezáleží na tom, či hádžeš raz alebo miliónkrát.
Takže pri predpoklade, že funkcia rand vracia čísla z intervalu 0 až max_rand s pravdepodobnosťou, ktorá má rovnomerné rozdelenie, tak si stačí ten interval rozdeliť na niekoľko úsekov. Počet úsekov zodpovedá počtu čísel, z ktorých vyberáme a rozsah úseku je priamo úmerný pravdepodobnosti, s ktorou dané číslo vyberáme. Potom výberom náhodného čísla z celého rozsahu určíme, do ktorého úseku patrí. Riešiť to poľom, v ktorom je viacnásobný výskyt niektorých čísel, je trošku nešikovné a okrem niektorých veľmi špecifických prípadov aj neefektívne :).
K té fci, nejde o nic jiného, než o rozložení pravděpodobnosti. std rand() se snaží mít rozložení rovnoměrné. A po té fci chcete, aby se to rozložení dalo předepsat.
Třeba Gaussovo rozdělení dostanete tak, že posčítáte n vygenerovaných radn() s normálním rozložením, zajímavostí se dá dosánout násobením atd.
Ale takhle předepsat, to je zajímavá myšlenka.
<HTML>Tak jsem se vrátil z dovolenky. Nemám zatím zprávy od kolegy, jak je na tom s tvorbou stránek, každopádně já už jsem plně zabrán do přípravy prvního kola - abyste si nemysleli, zadání hotové je, chybí mi doprovodné soubory - k jednomu z příkladů budou dost potřeba a jejich tvorba mi kapku potrvá, ale do pátku se stihnout dá.
Jak jste už možná pochopili, nebo jste se dovtípili:
1) půjde o genialitu řešení - geniální řešení je jednoduché, účinné, samozřejmě splňuje zadání, nenechá se ochcat nepřijatelnými vstupními podmínkami atd. samozřejmostí je i dokumentace, ale vzhledem k tomu, že jako řešení se budou odesílat jen hotové práce, to jest skripty, dokumentace bude na úrovni komentářů, a ne stylem pro blbý, spíš aby se dalo z komentářů pochopit, co to vlastně dělá ;) Celkem v každém kole rozdáme každému až dvacet bodů, nějaké budou bonusové - čas, celková genialita apod, ale i prasácky napsaný kód bude nějakými bodíky ohodnocen - bude-li fungovat.
2) vícedenní kolo v plánu není... existují jiné programátorské soutěže a ty jsou taky jen na pár hodin - například finále mistrovství české republiky v programování (mládež) trvalo 4 hodiny, bylo v sobotu (před vysvědčením, mám-li dobrou paměť), byla tam sice jen jedna naprosto k úloha pro pošahaný ajnštajny, ale podmínky byly srovnatelné. Zde však budou mít soutěžící i přístup k internetu a po ruce jistě tucty knížek, to já jsem během finále neměl ;)
3) úlohy hodláme zaměřit jak na praktickou část, tak i na algoritmy, zde je však ten průser, že algoritmů se vám po internetu hází jen do guglu ťuknout a vymýšlet úlohy na algoritmy tak, aby samy o sobě nebyly zmagořelé a v praxi nepoužitelné, to je práce pro boha. Ale každopádně něco v zásobě máme - mohu se přiznat asi k patnácti předem připravených úloh, z nich máme již dva týdny vybrány první tři. Z těch patnácti je minimálně jedna algoritmizační, ale bude potřeba upřesnit zadání, no nebudu rozebírat, jednou ji dostanete ;) Algoritmizační úlohy však čekejte až v druhém kole, možná to budeme střídat ;) I tak se na všech, to i praktických úlohách, možná i zapotíte - nemůžeme dávat hned těžké úlohy, nejprve musíme trošku oťukat vaši úroveň (jinými slovy - laťku si přibližně nasadíte sami) ;)
Marek z Markova: Zajímavý námět ;) Někdy se nad ním zamyslím - ale nechtěl bych, aby mi pak takový skript dával raději při míchání karet ve hře prší jako první kartu na stůl žaludovou sedmičku než kulovského spodka.
Ptejte se dál, jistě jsem neřekl všechno, co jsem mohl říct ;)</HTML>
<HTML>Tak ještě něco přihodím, než to nechám chvíli vařit. Koukám na zadání úloh předchozích pokusů a docela koukám, jak lehká zadání to byla ;) První úloha sobotního kola bude lehká asi jako tohle:
<cite>Do třetice všeho dobrého opět zatraceně těžká úloha. Vaším úkolem bude vytvořit filmotéku, která bude pracovat s databází MySQL. Skript bude představovat vyhledávací formulář, bude umět vyhledávat filmy podle režiséra, země původu, části názvu, některého herce, který ve filmu hrál, případně z rozmezí let a výběru žánrů... máte v podstatě volnou ruku. Strukturu tabulky si stáhněte! (4 body)</cite>
Tak si představujte něco trochu těžšího ;)</HTML>
Hehe no tohle je přesně ten typ příkladů o kterých jsem mluvil ;) Rutina, do toho člověk nevnese ani kapku invence a logického myšlení ale přesto se zapotí protože skript bude relativně dlouhý a vyžadující spoustu kontrol a funkcí které každý z nás psal už tisíckrát. Tudy by cesta PHP soutěží nevedla, aspoň pro mě ne ;)
<HTML>Ich souhlasim :)</HTML>
<HTML>Jenže PHP nemá tak široké užití v oblasti šílených algoritmů jako například céčko - v PHP se 3D střílečky s AI nepíšou. Je jen pár oblastí, v nichž PHP vyžaduje šílené algoritmy, ty tam budou... nebudu se o nich zmiňovat. Rozlišujte teoretické úvahy pro pošahaný ajnštajny od reality ;)
Dívám se na úlohy přichystané na sobotu - žádná nevyžaduje tisíce kontrol, a každá z nich jde řešit minimálně tolika způsoby, kolik bude soutěžících ;) Nejsou algoritmizační, jsou více do praxe, ale proč by měly být nudné?
Btw, tu ukázku jsem nemínil jako "takováhle nějaká úloha tam bude" ale jako "takhle nějak těžká úloha tam bude". Zadání neznáte a věřte, jsou to zhruba třikrát delší texty, jsou i zajímavě psaná - žádné rychlokvašky ;)</HTML>
O šílené algoritmy pro ajnštajny nejde ;)
I v praxi jsem narazil na pro mě zajímavé úlohy, protože jsem je předtím nedělal a musel jsem nějak vymyslet jak na to. Takže to není jen o tom že bych v PHP soutěži uznával jen šílené algoritmy které normálně v praxi nikdo v PHP v životě dělat nebude. Je jasné, že není možné do zadání dostat úlohy, které žádný ze soutěžících ještě neřešil aby pro ně byly zajímavé, ale když se vyberou prochu méně typické úlohy, půjde to.
A taky jsem pochopil, že to zadání filmotéky nebylo uvedeno jako ukázkový příklad zadání, které bude teď. Akorát jsem to využil abych na kontrétním příkladu ukázal přesně jakou úlohu bych nikdy v dobrovolné PHP soutěži neřešil. Přesně takovouhle, tedy zadávání dat z formuláře do databáze, jejich výpis a filtrování. Tohohle mám totiž opravdu plné zuby :D
<HTML>Tom, tak v tom případě se v sobotu zapoj... i kdyby se ti úlohy nelíbily, aspoň budeš mít na základě čeho kritizovat ;) Filmotéku apod. nemáme v plánu v žádném případě... spíš než filtrování bude na pořadu zpracování (nějakým algoritmem).</HTML>
tak si to uzijte, vikendy jsem offline...
Mne by se chtelo, ale jaksi nemam cas a misty i chut :( Ale zkusim se podivat na zadani a pokud bude zajimave, tak bych to aj zkusil.
Bohužel si asi nezapojím protože už jsem se vyjádřil k těm časovým záležitostem. Sobota odpoledne, od xx do yy je pro mě na podobnou soutěž nepřijatelné. Je mi jasné že v "opravdových" soutěžích to tak je taky, ale tohle přecejenom je jakási "fun" soutěž. Dokázal bych si představit vyřešení jednoho dvou úkolů po chvilkách během víkendu nebo pečlivé vyřešení všech úkolů po chvilkách během týdne, ale strávit 4 hodiny v sobotu programováním v takové rychlosti abych stihl někkolik různých úloh včetně dokumentace, to mě moc neláká (pokud to není práce za kterou dostanu peníze a kterou bych tudíž udělat musel).
To není kritika, to je odůvodnění toho proč to bude bez mé účasti nebo proč vyřeším jen jednu úlohu pokud mě opravdu zaujme.
<HTML>Dobrý den, zdravím všechny, kdo si chtěli zasoutěžit, a i všechny, kdo by si chtěli zasoutěžit, ale nemají čas. Po diskusi s lacopem jsme se dohodli na některých úpravách soutěže.
1) Termín prvního kola posuneme na začátek září - bude upřesněno. Vzhledem k dovoleným a nedostatku času k přípravě zadání i celého "redakčního" systému dochází ke zpožděním oproti plánu, které bychom teď už nedohnali. Počet kol bude upraven tak, aby mohla soutěž skončit před Vánoci.
2) S ohledem na četné připomínky typu "nemám čas o sobotu" apod. jsme nakonec přistoupili na návrh celotýdenní soutěže, kdy jedno kolo začne v sobotu a skončí v pátek. Očekávejte však komplexnější úlohy, které by sice šly vyřešit během 4 hodin, ale budou vyžadovat nějaký čas k přemýšlení, výběru optimálního postupu a studiu manuálu k daným funkcím jazyka PHP.
3) Komplexnější úlohy budou spojovat obé - algoritmizaci a praktické problémy a budou tvořeny tak, že bude povinná část za určitý počet bodů a další body bude možné získat za všelijaké další pokročilé funkce, které vás napadnou.
Uvedu příklad:
<cite>Naskriptujte přehrávač šachových turnajů. Šachový turnaj je zaznamenán v textovém souboru pomocí klasické šachové notace, dále jsou v souboru obsaženy jména hráčů. Nutné funkce - zobrazení pozic figur a pěšáků při každém tahu.</cite>
A je na vás, jak to zpracujete - zda budete generovat nějaký obrázek, zda do obrázku dáte třeba nějaké šipky, můžete se pokusit i o určitou analýzu situace, můžete sami doplnit posouzení jednotlivých tahů (To byl dobrý tah, špatný tah...), můžete vytvořit editor, kdy si dva lidi k tomu sednou a zahrají hru, která se potom následně zapíše... Prostě možností je nespočet.
To je tak vše, co nyní mohu říct.
Děkuji za pochopení, užijte si prázdnin a uvidíme jak se to vyvrbí ;)
Vaši Nípal a lacop</HTML>
Jakékoliv zobrazování jistí ASCII art :-)
<HTML>Non_E: klidně si to zobrazuj morseovkou. ;)</HTML>
Nípal: no to není špatný nápad, dát jako úkol parser na morseovku :-)
Kdybych dostal před sebe šachovou notaci, asi bych nevěděl co to je a myslel bych, že to je nějaký hexa kód, když si asi tak představim jak taková notace může vypadat. Šachy nehraju, tak to by bylo fiasko :)).
Zrovna ikdyž jsem se koukal na turnaj v "rychlošachách", tak bych to nenapsal. Jinak já trochu zvažuju, že bych se zapojil. Něco v PHP snad už zmáknu :), ale nevím no, bude dost školy, kord na začátku, kdy budu muset dohánět to co sem o prázkách zapoměl :-/
No to je další problém. Úkol týkající se šachů a vyžadující znalost šachové notace => PHP soutěž nefér k těm co šachy nehrají. Šachová notace nemá s PHP nic společného.
V takovém případě by asi byla jediná možnost - napsat k zadání úkolu i dostatečný popis dané problematiky.
Třeba taková morzeovka je obecně známá (princip), takže tam by to potřeba nebyla (je jasné že sice ne každý všechny znaky umí, ale to se dá najít na internetu za 15 sekund), ale <strong>NAPŘ.</strong> šachová notace a přehrávání šachové partie, to je už trochu složitější.
<HTML>Navrhuji klasicke piskvorky..
human vs. PC</HTML>
<HTML>Šachy, piškvorky... šachová notace, piškvorková notace... všechno se dá najít na internetu do 15 sekund, čili já v tom žádnou diskriminaci nevidím. Ale stejně - byl to příklad, ne opravdové zadání - to samozřejmě bude mít nějaké přílohy a bude třeba přes půl stránky apod.</HTML>
Hoj Nípale, soutěžního zadání se dnes asi nedočkám, viď? Chcete s tím redakčním systémem nějak pomoct? (bez bodů :-) ) Nějak to nabírá skluz a jestli začne souťež o Vánocích (čti zkouškovém), tak mě nepotěšíte...