Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

Tento týden jsme pro vás připravili velkou předvánoční programátorskou soutěž!

A protože se vánoce kvapem blíží, bude tentokrát nejlepší dílko oceněno nejen plackou, ale i knihou, která by neměla chybět v knihovně žádného programátora.
Jedná se o "Umění programování - 1. díl" od D.E. Knutha, otce a de facto zakladatele moderní analýzy algoritmů.
http://neoluxor.cz/…-dil--15741/

Co bude vaším úkolem?

Musíte napsat program, který pomůže vyřešit velkou Santovu vánoční hádanku.
Mějte však na paměti, že snadné řešení nemusí být to, které získá hlavní cenu.
Váš program může být v libovolném jazyce, pokud je volně dostupný interpret nebo kompilátor.
Program by také neměl mít k dispozici žádné další informace kromě těch, které jsou přímo v zadání.

Body navíc můžete získat za hezké a elegantní řešení.
Body dolů půjdou za chyby v kódu, dlouhou dobu výpočtu nebo specializovaná řešení, která se zhroutí při malé změně zadání.

Svá řešení posílejte jako soukromou zprávu na účet coells

Poslední termín na odevzdání řešení je 6.12.2013.

A teď už k samotné úloze - napište program, který vyřeší následující úlohu:

Santova hádanka

Santa má z vánoc velkou hlavu.
Od té doby, co má svůj seznam dětí uložený v počítači, to jde od deseti k pěti.
Zrovna tenhle týden se počítač zhroutil a Santovi skřítci-administrátoři zachránili pouze část dat.

Santa ví, že:

  1. V ulici je pět domů, každý dům má jinou barvu.
  2. V každém z pěti domů je dítě, které se jmenuje jinak než ostatní.
  3. Každé dítě má svůj oblíbený nápoj, vlastní jiného mazlíčka a k vánocům dostane jiný dárek.

A protože jedno z dětí celý rok jenom zlobilo, dostane k vánocům pouze uhlí!

Otázka: Které z dětí tak moc zlobilo?

Data, která se podařilo zachránit, obsahují:

  1. Tonda žije v bílém domě
  2. Maruska si k vánocům přeje počítačovou hru
  3. Pepík nejraději pije fantu
  4. Žlutý dům stojí hned nalevo od zeleného
  5. Dítě ve žlutém domě pořád pije pepsi
  6. Dítě, které chová hada, chce k vánocům kopací míč
  7. Dítě v červeném domě chová psa
  8. Dítě žijící v prostředním domě pije sprite
  9. Anička žije v prvním domě
  10. Dítě, které chová křečka, žije vedle dítěte, které si přeje stavebnici
  11. Dítě, které dostane ponožky, žije vedle dítěte, které chová psa
  12. Dítě, které chová rybičky, nejraději pije džus
  13. Petřík chová kočku
  14. Anička žije vedle modrého domu
  15. Dítě, které chová křečka, žije vedle dítěte, které pije jenom coca-colu

Autoři správných řešení získávají placku a samolepky, jak je u soutěží zvykem. Autor nejlepšího řešení navíc získává slavnou knihu Umění programování. Dokážete hádanku vyřešit?

Editováno 25.11.2013 18:49
Odpovědět  +4 25.11.2013 18:07
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na David Čápka
Daniel Vítek:

To nespočítám ani na papíře.. :D :D

(možná jo.. :D)

 
Nahoru Odpovědět  +7 25.11.2013 18:12
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na David Čápka
Zdeněk Pavlátka:

Tohle je hádanka, kterou vymyslel Einstein. :D Tohle je samozřejmě upravená verze. Měli jsme to řešit při jedné hodině matematiky, když nám chyběla učitelka.

Nahoru Odpovědět 25.11.2013 18:17
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
David Čápka
Tým ITnetwork
Avatar
Nahoru Odpovědět 25.11.2013 18:18
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na David Čápka
Zdeněk Pavlátka:

Řešení bylo jednoduché, ale pro počítač to bude těžší...

Nahoru Odpovědět 25.11.2013 18:19
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Inoue Yūki
Redaktor
Avatar
Inoue Yūki:

Tak jsem ve dvou konečně došel k výsledku na papíře. :D

Nahoru Odpovědět 25.11.2013 19:06
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Inoue Yūki
Jan Vargovský:

To pak není ono, musíš to hned algoritmovat :)

 
Nahoru Odpovědět 25.11.2013 19:07
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na Jan Vargovský
Inoue Yūki:

To bych nedal, skoro jsem to nedal ani na papíře. :D

Nahoru Odpovědět 25.11.2013 19:08
Avatar
Snorlax
Redaktor
Avatar
Snorlax:

Můžu mít otázku? Jak zjistim který dítě zlobí, když vím, co pije, v jakém době bydlí apod.? o_O

Nahoru Odpovědět 25.11.2013 19:16
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na Snorlax
Inoue Yūki:

Já si domyslel, že zlobilo to dítě, kterému nedopadl žádný dárek.

Nahoru Odpovědět 25.11.2013 19:18
Avatar
Snorlax
Redaktor
Avatar
Odpovídá na Inoue Yūki
Snorlax:

To že si to přeju neznamená, že to dostanu... To mě právě zmátlo

Editováno 25.11.2013 19:21
Nahoru Odpovědět 25.11.2013 19:18
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na Snorlax
Inoue Yūki:

Teď mi to došlo spolu s chybou, co jsem našel. :D

Nahoru Odpovědět 25.11.2013 19:22
Avatar
Sachi
Člen
Avatar
Sachi:

Tu chybu jsem našla já, když jsem to kontrolovala. ]:>

Nahoru Odpovědět  +1 25.11.2013 19:24
新世界の神になる!
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na David Čápka
Petr Nymsa:

Jak moc ten algoritmus má být "univerzální" ?

Nahoru Odpovědět 25.11.2013 19:28
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Inoue Yūki
Jan Vargovský:

Mi se to právě nechce dělat na papíře vůbec, tak to programuji :P

 
Nahoru Odpovědět 25.11.2013 19:52
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na Jan Vargovský
Inoue Yūki:

Mě by se to zase nechtělo programovat. Ani nevím vodkaď začít. :D

Nahoru Odpovědět 25.11.2013 19:53
Avatar
Michal Žůrek (misaz):

no toto udělám za každou cenu, i kdyby o měl algoritmus řešit hrubou silou.

Nahoru Odpovědět 25.11.2013 19:58
Nesnáším {}, proto se jim vyhýbám.
Avatar
Jan Vargovský
Redaktor
Avatar
 
Nahoru Odpovědět 25.11.2013 20:01
Avatar
Odpovídá na David Čápka
Michal Žůrek (misaz):

mě tam pletou ty děti žijící vedle jiných.

Nahoru Odpovědět 25.11.2013 20:03
Nesnáším {}, proto se jim vyhýbám.
Avatar
Odpovídá na Jan Vargovský
Michal Žůrek (misaz):

všechny možné varianty. Jedna (nebo více), která bude splňovat všechny podmínky bude vypsána.

Nahoru Odpovědět 25.11.2013 20:04
Nesnáším {}, proto se jim vyhýbám.
Avatar
Odpovídá na David Čápka
Michal Žůrek (misaz):

Proč si santa neudělal backup? To mu měli ti skřítci říct!

Nahoru Odpovědět  +9 25.11.2013 20:25
Nesnáším {}, proto se jim vyhýbám.
Avatar
Sachi
Člen
Avatar
Nahoru Odpovědět 25.11.2013 20:29
新世界の神になる!
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na Michal Žůrek (misaz)
Inoue Yūki:

Skřítci poslali data do oblak (cloud).

Nahoru Odpovědět 25.11.2013 20:31
Avatar
MLN
Člen
Avatar
MLN:

....při malé změně zadání. Čo myslia pod tým zadaním? to do programu napíšu tie všetky otázky a podla toho to ma program vypisat? alebo ako? tie otazky sa nejako zmenia ?

Editováno 25.11.2013 20:43
 
Nahoru Odpovědět  +2 25.11.2013 20:43
Avatar
done
Člen
Avatar
Odpovídá na David Čápka
done:

Sdraco, ty už jsi to vyřešil algoritmem ?:)

 
Nahoru Odpovědět  -1 25.11.2013 21:11
Avatar
Silvinios
Redaktor
Avatar
Odpovídá na MLN
Silvinios:

Výborná připomínka. Na první pohled by se mohlo zdát, že je zadání příliš nepřesné...

Pokud má program pouze vyřešit jedno konkrétní zadání, stačí si vzít tužka a papír, úlohu během několika minut vyřešit a pak napsat program, který vypíše jméno dítěte.

Pokud je cílem vytvořit program, který vyřeší libovolné zadání, chybí specifikace toho, co může a nemůže v zadání být.

V reálném světě bychom na sdraca nejspíše poslali analytika a pořádně ho vyzpovídali :-)

Protože jsme ale na devbooku, není těžké si domyslet, oč jde. Čím obecnější a propracovanější řešení, tím lépe. Viděl bych to tak, že zadání přepíšu do textového souboru v nějakém vhodném formátu, který můj program při spuštění načte. Pokud se zadání trochu změní, opravím jen vstupní soubor, ale program zůstane stejný.

 
Nahoru Odpovědět  +3 25.11.2013 21:29
Avatar
coells
Redaktor
Avatar
coells:

Zdravím všechny účastníky soutěže, soudě podle vašich ohlasů vás hádanka zaujala, což nás moc těší.

Jak píše nuz15, Einstein by se mohl zdát být autorem hádanky. Letos je to ovšem jinak - autorem je Santa. :-) A protože mám v zadání také prsty, odpovím na vaše dotazy.

Q: Jak zjistím, které dítě zlobí?
A: Doporučuji být pečlivější při čtení zadání: A protože jedno z dětí celý rok jenom zlobilo, dostane k vánocům pouze uhlí!

Q: Jak je to s dárky? Aneb, to, že si to přeju neznamená, že to dostanu... ?
A: Zbylé děti byly hodné, a proto opravdu dostanou to, co si přejí. Možná, že vás zmátly ty ponožky jako dárek, ale co my víme?

Q: Jak moc má být algoritmus univerzální? Nebo naopak jak moc nesmí být specializovaný?
A: Tak moc, jak to dokážete. Nemusíte chodit s kanónem na vrabce, ale jednoduché a obecné řešení má své výhody. Když hodnotím řešení, rád mu trochu změním vstupní hodnoty (klidně i nesmyslně), abych viděl, jak se chová. Vaše programy by měly nějakým způsobem zvládnout i to. Nemusíte rovnou psát vlastní parser, který z textového souboru načte zadání, porozumí mu a použitím vyšší inteligence ho vyřeší... ale samozřejmě platí, že čím lepší program, tím větší šance na výhru. ;-)

Q: Sdraco, ty už jsi to vyřešil algoritmem?
A: Dovolím si odpovědět za Sdraca. Tahle soutěž je o vás a pro vás! Máme své řešení, kterým jsme ověřili správnost zadání, ale více se těšíme na ta vaše.

Silvinios má určitě pravdu v jedné věci - jsme na Devbooku, kde jsou úlohy, hádanky a programování denním chlebem. Cílem je se pobavit a něco naučit.

 
Nahoru Odpovědět 26.11.2013 10:53
Avatar
coells
Redaktor
Avatar
coells:

A víš o tom, že dávat do soutěže řešení nebo spoilery není moc slušné? Proč kazit ostatním zábavu?

 
Nahoru Odpovědět  +1 26.11.2013 11:58
Avatar
Odpovídá na coells
Libor Šimo (libcosenior):

Tak to prosím zmaž.
Myslel som si, že toto je len prvý krok a nie som si istý, že je to správne.
Napísať algoritmus bude úplne iné kafe.

Nahoru Odpovědět 26.11.2013 12:01
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
David Čápka
Tým ITnetwork
Avatar
Nahoru Odpovědět 26.11.2013 12:02
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na coells
Libor Šimo (libcosenior):

Napísal si: " Když hodnotím řešení, rád mu trochu změním vstupní hodnoty (klidně i nesmyslně)..."
Chcem sa spýtať, či sa môže zmeniť aj počet domov(5) a počet vlastností(5*5), alebo len samotné vlastnosti?

Nahoru Odpovědět 26.11.2013 12:46
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
coells
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
coells:

Tím myslím, že mohu dát Aničku do pátého domu a uvidím, jak si s tím program poradí. Nebo také mohu do pátého domu dát všechny děti :-)

Klíčové ovšem je správně vyřešit původní zadání.

 
Nahoru Odpovědět 26.11.2013 12:55
Avatar
Odpovídá na David Čápka
Libor Šimo (libcosenior):

Sdraco, v zadaní si napísal:" 2. Maruska si k vánocům přeje počítačovou hru"
Predpokladám, že správne má byť "Maruška" a tak to bude aj v zadaní.

Nahoru Odpovědět 26.11.2013 13:22
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
coells
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
coells:

To je jen překlep, správně je Maruška.

 
Nahoru Odpovědět 26.11.2013 14:10
Avatar
Michael Olšavský:

Zadání mě trochu popletlo, ale jinak na papíře hotovo :D Mám ještě dotaz. Máme nějaký univerzální vstup nebo můžu mít vlastní formát zadání (je možné, že se někdo ptal)

 
Nahoru Odpovědět 26.11.2013 20:54
Avatar
Nahoru Odpovědět 26.11.2013 21:11
Nesnáším {}, proto se jim vyhýbám.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Michal Žůrek (misaz)
Jan Vargovský:

Ano. Btw zkouším to natvrdo a počítá to už 4 hodiny :`

 
Nahoru Odpovědět  +1 26.11.2013 21:17
Avatar
Nahoru Odpovědět 26.11.2013 21:19
Nesnáším {}, proto se jim vyhýbám.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Michal Žůrek (misaz)
Jan Vargovský:

Neměl by. Vypínat to nebudu, jestli to nevypočítá do 2 rána, tak to kašlu :D

 
Nahoru Odpovědět 26.11.2013 21:24
Avatar
Odpovídá na Jan Vargovský
Michael Olšavský:

Vždyť řešení je jen 3125 (55) jestli se nepletu ne? :D

EDIT: Řešení je jen jedno, možností je 5, při výpočtu KOMPLETNÍ TABULKY je zde 55

Editováno 26.11.2013 21:30
 
Nahoru Odpovědět 26.11.2013 21:28
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Michael Olšavský
Jan Vargovský:

(5!)^5 ... když k tomu přohodíš testování podmínek, měnění atributů instancí ...

Editováno 26.11.2013 21:38
 
Nahoru Odpovědět 26.11.2013 21:38
Avatar
Odpovídá na Jan Vargovský
Michael Olšavský:

Pravda pravda. S tím jsem nějak nepočítal :-D Tak už to chápu :D

 
Nahoru Odpovědět 26.11.2013 21:44
Avatar
coells
Redaktor
Avatar
Odpovídá na Michael Olšavský
coells:

Zadání můžete mít v libovolném formátu, žádná omezení nejsou.

 
Nahoru Odpovědět 26.11.2013 22:26
Avatar
Jan Vargovský
Redaktor
Avatar
Jan Vargovský:

Tak po optimalizaci +- 200ms :)

 
Nahoru Odpovědět 26.11.2013 23:23
Avatar
Libor Šimo (libcosenior):

Skúšam to bez permutácií za pomoci logiky, ale zatiaľ som sa ďaleko nedostal.

Nahoru Odpovědět 28.11.2013 18:15
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
coells
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
coells:

Pokud to dokážeš, tak se těším na řešení.

 
Nahoru Odpovědět 28.11.2013 18:16
Avatar
tomkrata
Člen
Avatar
Odpovídá na Snorlax
tomkrata:

Jedno dítě nedostane dárek. Spočítej si je. :D

 
Nahoru Odpovědět 28.11.2013 19:09
Avatar
Hartrik
Redaktor
Avatar
Hartrik:

Tak se mi dnes konečně podařil vypočítat výsledek, mám to pod 10 ms :)

 
Nahoru Odpovědět 1.12.2013 17:46
Avatar
Silvinios
Redaktor
Avatar
Odpovídá na Hartrik
Silvinios:

V čem jsi to napsal, smím-li se ptát?

 
Nahoru Odpovědět 1.12.2013 18:36
Avatar
Hartrik
Redaktor
Avatar
Odpovídá na Silvinios
Hartrik:

v Javě samozřejmě

 
Nahoru Odpovědět 1.12.2013 18:38
Avatar
Josef Kuchař (Pepa489):

10ms - blbost ne?

Nahoru Odpovědět  -5 1.12.2013 19:03
2x piš, jednou debuguj
Avatar
Michal Vašíček
Tým ITnetwork
Avatar
Michal Vašíček:

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

Nahoru Odpovědět  -1 1.12.2013 22:17
Příspěvek může obsahovat stopy arašídů, sarkasmu a sóji.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Michal Vašíček
Kit:

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
Michal Vašíček
Tým ITnetwork
Avatar
Michal Vašíček:

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

Nahoru Odpovědět  -3 2.12.2013 6:55
Příspěvek může obsahovat stopy arašídů, sarkasmu a sóji.
Avatar
coells
Redaktor
Avatar
coells:

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

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
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
coells:

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
Redaktor
Avatar
Juraj Mlich:

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
Vždy je lepšie učiť sa z cudzích chýb, než z vlastných chýb.
Avatar
Juraj Mlich
Redaktor
Avatar
Juraj Mlich:

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

Nahoru Odpovědět 6.12.2013 23:00
Vždy je lepšie učiť sa z cudzích chýb, než z vlastných chýb.
Avatar
TomBen
Redaktor
Avatar
TomBen:

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

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 Čápka
Tým ITnetwork
Avatar
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Ondrca
Redaktor
Avatar
Odpovídá na David Čápka
Ondrca:

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

Nahoru Odpovědět  +1 8.12.2013 12:04
Zase jsem o něco chytřejší
Avatar
coells
Redaktor
Avatar
coells:

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 - 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 Čápka 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  +2 8.12.2013 12:07
Avatar
Libor Šimo (libcosenior):

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 Čápka
Tým ITnetwork
Avatar
David Čápka:

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  +13 8.12.2013 12:19
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Juraj Mlich
Redaktor
Avatar
Odpovídá na coells
Juraj Mlich:

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
Vždy je lepšie učiť sa z cudzích chýb, než z vlastných chýb.
Avatar
Petr Nymsa
Redaktor
Avatar
Petr Nymsa:

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:

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

 
Nahoru Odpovědět 8.12.2013 14:50
Avatar
Petr G
Redaktor
Avatar
Odpovídá na Petr Nymsa
Petr G:

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
Redaktor
Avatar
Odpovídá na Petr Nymsa
Silvinios:

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
Redaktor
Avatar
Odpovídá na coells
Hartrik:

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
Redaktor
Avatar
Nahoru Odpovědět 8.12.2013 15:31
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Libor Šimo (libcosenior):

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 74 zpráv z 74.