NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
IT rekvalifikace s podporou uplatnění. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!

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.

Aktivity
Avatar
Josef Kuchař - Pepa489:1.12.2013 19:03

10ms - blbost ne?

Odpovědět
1.12.2013 19:03
2x piš, jednou debuguj
Avatar

Člen
Avatar
:1.12.2013 22:17

může být v php? asi ne co? :(

 
Nahoru Odpovědět
1.12.2013 22:17
Avatar
Kit
Tvůrce
Avatar
Odpovídá na
Kit:1.12.2013 22:35

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.

Nahoru Odpovědět
1.12.2013 22:35
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar

Člen
Avatar
:2.12.2013 6:55

Já ji ani nečetl ;) Ale dík

 
Nahoru Odpovědět
2.12.2013 6:55
Avatar
coells
Tvůrce
Avatar
coells:5.12.2013 12:21

Zdravím všechny řešitele, připomínám, že poslední termín na odevzdání vašich programů je zítra!

Nezapomeňte, že v sázce je jedna z nejlepších a nejúplnějších knih o algoritmizaci - Umění programování - 1. díl od D.E. Knutha

 
Nahoru Odpovědět
5.12.2013 12:21
Avatar
Odpovídá na coells
Libor Šimo (libcosenior):5.12.2013 21:58

Bohužiaľ je to nad moje sily. :(

Nahoru Odpovědět
5.12.2013 21:58
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
coells
Tvůrce
Avatar
Odpovídá na Libor Šimo (libcosenior)
coells:5.12.2013 22:00

Nevadí, po skončení soutěže uvidíš řešení ostatních a třeba to příště vyjde :-)

 
Nahoru Odpovědět
5.12.2013 22:00
Avatar
Juraj Mlich
Tvůrce
Avatar
Juraj Mlich:6.12.2013 18:03

Je to veľmi zaujímavý príklad :), ostáva mi pridať poslednú podmienku do programu a modlím sa nech to potom funguje :)

 
Nahoru Odpovědět
6.12.2013 18:03
Avatar
Juraj Mlich
Tvůrce
Avatar
Juraj Mlich:6.12.2013 23:00

Funguje to :D, konečne. Čas mám okolo 25ms :)

 
Nahoru Odpovědět
6.12.2013 23:00
Avatar
TomBen
Tvůrce
Avatar
TomBen:7.12.2013 16:12

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.

Nahoru Odpovědět
7.12.2013 16:12
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
Odpovídá na coells
Libor Šimo (libcosenior):8.12.2013 9:33

Ani si neviete predstaviť aký som netrpezlivý. Veľmi rád by som videl výsledky súťaže. :[

Nahoru Odpovědět
8.12.2013 9:33
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:8.12.2013 11:41

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 :)

Nahoru Odpovědět
8.12.2013 11:41
New kid back on the block with a R.I.P
Avatar
Ondrca
Tvůrce
Avatar
Odpovídá na David Hartinger
Ondrca:8.12.2013 12:04

Bude nová soutěž vyhlášena ještě dnes?

Nahoru Odpovědět
8.12.2013 12:04
Zase jsem o něco chytřejší
Avatar
coells
Tvůrce
Avatar
coells:8.12.2013 12:07

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.

 
Nahoru Odpovědět
8.12.2013 12:07
Avatar
Libor Šimo (libcosenior):8.12.2013 12:16

Gratulujem všetkým a teším sa na riešenia. :)

Nahoru Odpovědět
8.12.2013 12:16
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:8.12.2013 12:19

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.

Nahoru Odpovědět
8.12.2013 12:19
New kid back on the block with a R.I.P
Avatar
Juraj Mlich
Tvůrce
Avatar
Odpovídá na coells
Juraj Mlich:8.12.2013 14:04

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 :)

 
Nahoru Odpovědět
8.12.2013 14:04
Avatar
Petr Nymsa
Tvůrce
Avatar
Petr Nymsa:8.12.2013 14:44

Přidáte alespoň první dva svá řešení ? :) Celkem by mě to zajímalo

Nahoru Odpovědět
8.12.2013 14:44
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Snoswem
Člen
Avatar
Odpovídá na Petr Nymsa
Snoswem:8.12.2013 14:50

Přesně..
Autorovi: Inspiroval jsi se zebrou, že ano?

 
Nahoru Odpovědět
8.12.2013 14:50
Avatar
Petr Gürth
Tvůrce
Avatar
Odpovídá na Petr Nymsa
Petr Gürth:8.12.2013 15:18

Já jsem to dal k publikaci. Snad nevadí, že jsem byl třetí :D

 
Nahoru Odpovědět
8.12.2013 15:18
Avatar
Silvinios
Tvůrce
Avatar
Odpovídá na Petr Nymsa
Silvinios:8.12.2013 15:18

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.

 
Nahoru Odpovědět
8.12.2013 15:18
Avatar
Hartrik
Tvůrce
Avatar
Odpovídá na coells
Hartrik:8.12.2013 15:30

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

 
Nahoru Odpovědět
8.12.2013 15:30
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na Petr Gürth
Petr Nymsa:8.12.2013 15:31

Určitě ne :)

Nahoru Odpovědět
8.12.2013 15:31
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Libor Šimo (libcosenior):8.12.2013 15:39

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.

Nahoru Odpovědět
8.12.2013 15:39
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 24 zpráv z 74.