Diskuze: Předvánoční speciál machra - Santova hádanka
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 24 zpráv z 74.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Váš program může být v libovolném jazyce, pokud je volně dostupný interpret nebo kompilátor
Čemu jsi v této větě nerozuměl? PHP je volně dostupný interpretr.
Nevadí, po skončení soutěže uvidíš řešení ostatních a třeba to příště vyjde
Je to veľmi zaujímavý príklad , ostáva mi pridať poslednú podmienku do programu a modlím sa nech to potom funguje
Funguje to , konečne. Čas mám okolo 25ms
Původně jsem se tím nechtěl zabývat. Tenhle typ hádanek je
poměrně známý a není tam kromě pečlivosti asi co řešit.
Včera večer mě ale napadlo, že by bylo zajímavé udělat
poloautomat, který by neřešil ani tak výsledek, jako spíš
by u každé položky shromažďoval podmínky a v reálném čase
ukazoval možná platná umístění. Řešení pak lze snadno najít
postupným pokládáním platných položek.
Mám to hotovo v gml a mám i řešení takto získané.
Splácal jsem to celkem narychlo, takže faktické provedení
není tak univerzální, jako původní idea a trochu jsem
zneužil fakt, že zadání není příliš složité.
Podmínky jsou vlastně jen ve třech typech:
Fixní poloha, Relativní poloha a Sousedství.
Jednoduchý editor, který jsem si napsal, nechá vytvořit
položku, přiřadit podmínky a vysvítí platné volby.
Zároveň vypisuje vazby na jiné položky, takže je snadné
najít jejich pozici i když je vazeb víc.
Během používání jsem zjistil, že by se systém ještě zlepšil,
kdybych připsal zámek polohy pro relativní a sousedské vztahy.
S tím už jsem se ale nepatlal, když řešení mám.
Úloha by se velice ztížila, kdyby obsahovala relativní odkazy
vyššího řádu. Např.: Petřík by žil vedle toho, který
sousedí s tím, kdo pije coca-colu.
Taky by bylo zajímavé, kdyby byly i negativní podmínky,
Např.: Kdyby byla Anička nechovala to, co chová,
mohl by obyvatel bílého domu dostat uhlí nebo ponožky.
Je to velice variabilní záležitost a skýtá spoustu zábavy.
Ani si neviete predstaviť aký som netrpezlivý. Veľmi rád by som videl výsledky súťaže. :[
Včera mi coells poslal finální výsledky soutěže, dnes je sem dáme, říkal jsem si, že by bylo lepší, kdyby to sem napsal přímo on
Přeji příjemné nedělní poledne a přináším horké vyhlášení vánočního speciálu machra. Tak tedy k výsledkům.
Juraj Mlich - 60 bodů
Juraj se ve svém řešení snaží přes dosud známá fakta vyloučit ostatní možnosti. Program je tak trochu šitý horkou jehlou a rozložení hlavního výpočtu na řadu malých metod by mu jenom prospělo. Výpočet také obsahuje nápovědy, které nejsou v zadání (umístění modrého a zeleného domu). I přesto by se stále jednalo o hezké řešení, kdyby ... kdyby výsledek nebyl chybný. Ale protože hodnotíme nejen výsledek, ale i postup, placku si zaslouží.
Jan Vargovský - 80 bodů
P4koo odevzdal postupně několik řešení a prozradím na něj, že rozdíl v kvalitě mezi první a finální verzí je obrovský. Program prochází všechny permutace a testuje, zda je zadaná konfigurace možná. Kvůli rychlosti p4koo chytře proházel testování podmínek. Program tedy není příliš generický a kód by mohl být trochu čitelnější. I přesto si myslím, že p4koo předvedl úžasný pokrok v duchu Devbooku, naučil se nové věci a vydal ze sebe to nejlepší. Za to ode mě dostal o 10 bodů více.
Petr Gürth - 80 bodů
Petr napsal program, který nejen řeší úlohu, ale usměvavý Santa vás navíc také rozesměje. Petrovo řešení je šité na míru a programu trochu napovídá - některé věci, které program "ví", nebyly v zadání, ačkoliv je kód mazaně ukrytý v pořadí prováděných pravidel. Jako takové plus a mínus bych ohodnotil komentáře. Ano, komentáře tam jsou, ale moc mi při čtení nepomohly více než názvy metod. Body jsou přesto zasloužené.
Hartrik - 95 bodů
Hartrik vytvořil asi nejhezčí řešení. Bohatě stylovaná aplikace, vlastní parser pro české zadání je zajímavý nápad a řešení algoritmu je dostatečně generické a stále deterministické. Kód je navíc pěkně navržený a rozmyšlený a hlavně - okomentovaný! V závěrečném rozhodování tak musely rozhodovat maličkosti. Hartrikovo řešení má totiž jednu chybu - pro výpočet řešení používá 50 cyklů a pokud hodnotu přesáhne, skončí. To lze udělat jinak a lépe. Nicméně stále se jedná o favorizované řešení, které byste si měli prostudovat. Takhle má vypadat soutěžní řešení.
Silvinios - 98 bodů
Když Silvinios dostane za úkol postavit na jezero vor, postaví si za chatou válečný křižník. Asi takhle bych charakterizoval jeho řešení. Vlastní deklarativní jazyk, generické definice relací a domény, deterministické hledání výsledku. Programu bych vytknul zbytečnou složitost na úrovni tříd - méně je někdy více. Také některé metody by si zasloužily rozdělit na více částí nebo alespoň okomentovat. Rozluštit, jak přesně funguje tenhle křižník, mi chvíli trvalo a autor se mi to nesnažil zjednodušit, za to šly symbolické 2 body dolů.
Malé zklamání je v tom, že ani jedno z řešení nepředvedlo, jak počítač "uvažuje" - jaká pravidla použil, mezivýsledky nebo kolik kroků potřeboval. V případě hádanky je přece vždycky dobré vědět, jak se dojde k řešení. Přesto mám z dodaných řešení velikou radost a těším se zase za rok
Finální hodnocení
I když Hartrikovo řešení je přesně takové, jak bych si představoval, absolutním vítězem se stal Silvinios. Jeho řešení bylo jediné, do kterého jsem si velice snadno napsal úplně jinou hádanku - a dostal jsem správný výsledek. Gratulujeme!
V rámci vánočního machra se navíc David Hartinger rozhodl ocenit plackou všechna řešení! Jemu chci také poděkovat, že mi pomohl zorganizovat tuhle soutěž. Byla to opravdu zábava.
Všem děkujeme za účast, vítězové nechť publikují výtvory a napíší x jako obvykle.
Gratulujem všetkým a teším sa na riešenia.
Já bych chtěl poděkovat za celý devbook coellsovi, že zorganizoval zajímavou soutěž, která všem zúčastněným jistě hodně dala a hlavně že věnoval knihu za 1000 korun jako cenu. Jsem rád, že tu jsou lidi jako ty, vždycky mě nakopnete k další aktivitě a k tomu, abych se o síť dál staral.
Ja som to tak pôvodne mal, len sa tam vyskytla mala chyba a nevedel som ako to riešiť. Tak som to nakoniec o 21:00 celé vymazal a spravil nanovo
Přidáte alespoň první dva svá řešení ? Celkem by mě to zajímalo
Já jsem to dal k publikaci. Snad nevadí, že jsem byl třetí
Přidáno. Teď už se jen čeká na schválení...
Princip mého řešení není složitý. Z tabulek všech možných kombinací se postupně vyškrtávají možnosti, které jsou nepřípustné. Stejným způsobem bych řešil úlohu na papíře.
Nejtěžší pro mě bylo vymyslet, jak si poradit s informacemi typu: Anička žije vedle modrého domu. Hodně úsilí mě stálo program odladit.
Uvažoval jsem, že by program vypisoval své myšlenkové pochody, jak píše coells, ale nakonec jsem to zavrhl. Připadalo mi to příliš pracné. Jednotlivých logických kroků bylo docela dost.
Komentáře jsem do kódu nepsal žádné, abych ušetřil čas.
Samozřejmě mě zklamalo, že jsem nezvítězil, poté co jsem si s tím dal takovou práci, ale Silvinios si to jistě zaslouží, takže gratuluji.
Uznávám, že ta záležitost s cykly lze vyřešit lépe, ale výsledek to neovlivní.
Program publikuji ještě dnes, jen nevím jak ho mám pojmenovat, když jich tu teď bude pět stejných...
Ak by čiste náhodou zaujímalo ako šialene som to skúšal ja, nech sa
páči:
https://www.dropbox.com/…aHadanka.zip
Mám tam len logiku umiestnenia presných daných hádanky, teda:
8. Dítě žijící v prostředním domě pije sprite
9. Anička žije v prvním domě
14. Anička žije vedle modrého domu
Ďalej som sa nedostal.
Zobrazeno 24 zpráv z 74.