Diskuze: Machr na algoritmy - osvětlení

C# .NET .NET (C# a Visual Basic) Machr na algoritmy - osvětlení American English version English version

Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Zdeněk Pavlátka:

V tomto machrovi budete osvětlovat místnosti ;) Aplikace si vyžádá obrázek. Ten bude tvořený černou, modrou a bílou barvou a oranžovými tečkami. Černá barva je volný prostor, bílé jsou zdi, modré jsou dveře a oranžové body jsou světla. (Ukázku máte mezi obrázky) Úkolem aplikace bude tento obrázek "osvětlit" - tzn. černou barvu nahradit odstínem šedé podle světla na daném místě. Světlo se bude šířit z oranžových bodů. Ty budou mít vždy 100% červenou složku a podle velikosti zelené složky poznáte sílu zdroje světla (např. [255;32;0] je slabé světlo, [255,192;0] celkem silné). Světlo samozřejmě nemůže projít zdmi, ale dveře část světla propustí.

Pro jakékoli dotazy je dost místa v komentářích.

Čas si dáme do neděle 12.4.2015 do 12:00. Vyhodnocení bude (snad) téhož dne večer.

Kompletní pravidla soutěží: http://www.itnetwork.cz/…outezi-machr

Odpovědět  +5 2.4.2015 11:02
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na Zdeněk Pavlátka
Ondřej Štorc:

Otázka první, nemohl bys sem dát trochu větší obrázek té místnosti? :D A druhá otázka je jakou mají mít ty dveře propustnost? Nebo si ji máme zvolit sami?

Nahoru Odpovědět  +3 2.4.2015 11:19
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Odpovídá na Zdeněk Pavlátka
Petr Čech (czubehead):

Co přesně znamená "dveře část světla propustí" ? Nemohl bys to nějak přiblížit?

Nahoru Odpovědět 2.4.2015 11:20
Why so serious? -Joker
Avatar
Odpovídá na Zdeněk Pavlátka
Michael Škrášek:

Pochopil jsem správně, že úkolem aplikace bude vyhledávat na obrázku oranžové body, když je najde, tak kolem nich osvětlit body. (pokud to není zeď, pokud tam jsou dveře tak trochu světla propustit)

Ještě jsem nepřišel na lepší způsob, než procházet obrázek bod po bodu a získávat barvu z bodu, ale to bude hodně dlouho trvat, tak budu muset asi přijít na lepší způsob. :D

Nahoru Odpovědět  +1 2.4.2015 11:52
Proč to dělat složitě, když to jde jednoduše.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Petr Čech (czubehead)
Zdeněk Pavlátka:

část světla znamená, že při průchodu dveřmi se světlo výrazně zeslabí

Nahoru Odpovědět 2.4.2015 12:01
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
rwn
Člen
Avatar
Odpovídá na Zdeněk Pavlátka
rwn:

chtěl bych se také zeptat, ty světelné body si (dejme tomu na začátku) zvolí uživatel, nebo ty budou čistě statické - pořád na stejném místě?

Nahoru Odpovědět 2.4.2015 14:13
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Avatar
patrik.valkovic
Šéfredaktor
Avatar
patrik.valkovic:

To světlo bude s odstupem od bodu slábnout nebo bude stále ve stejné intenzitě? Sílu světla máme tedy udělat barvou? Odráží se světlo od stěn?

Nahoru Odpovědět  +1 2.4.2015 14:18
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na rwn
Zdeněk Pavlátka:

Lampy budou pevně dané.

Nahoru Odpovědět 2.4.2015 14:21
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na patrik.valkovic
Zdeněk Pavlátka:

Ano, světlo slábne se vzdáleností, odrážení záleží na tobě.

Nahoru Odpovědět 2.4.2015 14:22
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
patrik.valkovic
Šéfredaktor
Avatar
patrik.valkovic:

Ještě taková připomínka, nebylo by jednodušší předat data v jiném formátu? Takhle je potřeba obrázek první "naparsovat" a až poté vytvářet onen algoritmus (který by měl být hlavním cílem, jestli se nemýlím). Například JSON nebo XML?

Nahoru Odpovědět 2.4.2015 18:08
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Ondrca
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Ondrca:

Rád bych se zeptal, v jaké velikosti bude obrázek zadán?

Nahoru Odpovědět  +1 2.4.2015 19:24
Zase jsem o něco chytřejší
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Ondrca
Zdeněk Pavlátka:

K tomu ti řeknu jen, že nebude větší než 640 * 480.

Nahoru Odpovědět  +1 2.4.2015 19:52
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Ondrca
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Ondrca:

Díky, tohle zadání je originální a i zajímavé :)
EDIT:// myslím celé zadání toho machra

Editováno 2.4.2015 19:57
Nahoru Odpovědět  +2 2.4.2015 19:56
Zase jsem o něco chytřejší
Avatar
Michael Škrášek:

Už to začíná trochu vypadat, už jen vylepšit propustnost dveří, optimalizovat a okomentovat kód a mám to hotové. :D

Snad to vypadá celkem k světu. :)

Nahoru Odpovědět  +2 3.4.2015 11:03
Proč to dělat složitě, když to jde jednoduše.
Avatar
Petr Čech (czubehead):

Myslím, že to není tak zlé.

Nahoru Odpovědět  +2 5.4.2015 14:06
Why so serious? -Joker
Avatar
Michael Škrášek:

Po dlouhém bádání a přemýšlení, jak funguje světlo jsem došel k tomuto názoru (viz obr), světlo by se měla sčítat, vím, vypadá to divně, ale fyzikálně by to tak mělo být. :D

Pokud jsem v omylu, tak mě z něho prosím někdo vyvěďte :)

Nahoru Odpovědět  +1 5.4.2015 16:10
Proč to dělat složitě, když to jde jednoduše.
Avatar
Odpovídá na Petr Čech (czubehead)
Michael Škrášek:

Jen malá rada, menší zdroje světla by měli začínat s menším osvětlením okolo, ty všechny začínáš stejně a pak máš různý skoky, skoky by měly být všude stejný.
;)

Nahoru Odpovědět 5.4.2015 16:13
Proč to dělat složitě, když to jde jednoduše.
Avatar
Odpovídá na Michael Škrášek
Michal Žůrek (misaz):

takhle nějak jsem si to představoval, ostatní tam mají v místech kde se srážejí světla jakousi temnotu, nevím proč, už jsem si myslel, že jsem jenom já divný.

Nahoru Odpovědět  +1 5.4.2015 16:16
Nesnáším {}, proto se jim vyhýbám.
Avatar
Odpovídá na Michal Žůrek (misaz)
Michael Škrášek:

Původně jsem to tak měl taky, ale pak jsem se kouknul večer (včera) kolem sebe a žádnou temnotu jsem v pokoji neměl, tak jsem se do toho dneska pustil :D

Editováno 5.4.2015 16:22
Nahoru Odpovědět  +1 5.4.2015 16:21
Proč to dělat složitě, když to jde jednoduše.
Avatar
Odpovídá na Michael Škrášek
Petr Čech (czubehead):

Jo, už jsem to tak měl, ale tohle se mi líbilo víc :D Nicméně to je 1 řádka. Ale zdá se mi, že to mám hrubě neefektivní, pokud tomu dám složitější úkol, trvá vykreslení třeba i několik desítek sekund...

Editováno 5.4.2015 16:28
Nahoru Odpovědět  +1 5.4.2015 16:26
Why so serious? -Joker
Avatar
Odpovídá na Petr Čech (czubehead)
Michael Škrášek:

Složitějším úkolem myslíš větší mapu?

Mně ta velká mapa trochu blbne a vykresluje se celkem dlouho, ale přes deset sekund to nebude. Blbne mi to asi proto, že zvětšením se to trochu rozmazalo - tím pádem přidaly barvy ...

Nahoru Odpovědět  +1 5.4.2015 19:46
Proč to dělat složitě, když to jde jednoduše.
Avatar
Petr Čech (czubehead):

Už bych se měl opravdu začít učit Latinu, ale nedokážu přestat myslet na to, jak ten můj algoritmus vylepšit :D :@

Nahoru Odpovědět  +2 7.4.2015 18:11
Why so serious? -Joker
Avatar
Štefan Pružinský:

Čaute, zapojil som sa do tohto Machra taktiež, avšak nakoľko som bol tento týždeň vysoko pracovne zaťažený (vrátane dnes a zajtra), nestihnem dokončiť Machra načas. Určite ho však pošlem mimo súťaž:).
Zdeněk Pavlátka Výborný nápad na súťaž:)

Nahoru Odpovědět 11.4.2015 13:28
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Luboš Běhounek (Satik):

Na Velikonoce jsem byl v Krkonoších a měl nějaký čas, tak jsem něco jednoduchého taky napsal :)

Nahoru Odpovědět  +4 11.4.2015 16:42
:)
Avatar
Michael Škrášek:

Už jsem to měl hotové, krásné, možnost zvětšení ... a pak se mi to povedlo nějak po*rat :(, musim opravit propustnost dveří

Editováno 11.4.2015 19:49
Nahoru Odpovědět 11.4.2015 19:48
Proč to dělat složitě, když to jde jednoduše.
Avatar
vodacek
Redaktor
Avatar
Avatar
Nahoru Odpovědět  +2 11.4.2015 22:14
Why so serious? -Joker
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
patrik.valkovic:

Měl jsem stejnou myšlenku, jen jsem to nestihl :( Škoda

Nahoru Odpovědět 12.4.2015 9:12
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Petr Čech (czubehead):

Takže tady je moje řešení: https://www.dropbox.com/…usLyYrYjcnva?dl=0
Veškerá logika je v třídě ImageProcessor. Ta obsahuje vlastně 2 algoritmy- jeden je rychlejší, druhý kvalitnější; chtěl bych ohodnotit spíš ten kvalitnější. Když to spustíte, v okně se dá nastavit pár hodnot:
max poloměr světla: [px] nedával bych tam větší hodnoty než 40
koeficient kvality (opravdu mě nic lepšího nenapadlo :D ) je inverzní, tj. čím menší číslo, tím lepší kvalita.
Dveře uberou jas: o kolik se z 255 zmenší jas za dveřmi
Max chyba detekce překážky: ve stupních
Kvalita/výkon: přepínání mezi 2 algoritmy.
PS: pokud je kód prasárna, napište prosím proč a lepší řešení.
PPS: je to 1. kód, který jsem zveřejnil, tudíž i 1. machr

Nahoru Odpovědět 12.4.2015 10:47
Why so serious? -Joker
Avatar
coells
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
coells:

Když se koukám na obrázky, tak si říkám, že asi žiju v jiném vesmíru s odlišnými fyzikálními principy :-D Z mojí lampičky bys tohle nevymáčkl ani za nic.

 
Nahoru Odpovědět  +1 12.4.2015 11:16
Avatar
Nahoru Odpovědět  +1 12.4.2015 11:24
Proč to dělat složitě, když to jde jednoduše.
Avatar
Michael Škrášek:

Tak jsem to stihl :D

http://leteckaposta.cz/765894050

Sice je hodně malá šance proti Luboš Běhounek (Satik), ale za pokus to stojí

Nahoru Odpovědět  +2 12.4.2015 11:41
Proč to dělat složitě, když to jde jednoduše.
Avatar
Odpovídá na coells
Luboš Běhounek (Satik):

Co přesně tím máš na mysli? :D

Nahoru Odpovědět  +3 12.4.2015 11:52
:)
Avatar
coells
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
coells:

To, že osvětlení povrchu je dáno jen a pouze úhlem mezi odraženým světlem a pozorovatelem jako důsledek nerovnosti povrchu, úbytek světla se na druhou stranu vztahuje k pohlcení světla materiálem (případně prachovými částicemi ve vzduchu). A do třetice halo, které vidíme v mlze je dáno molekulami vody ve vzduchu a rozptylem světla.

Jak říkám, z mé lampičky bys takové obrázky nevymáčkl, ale kdybys viděl elektromagnetické vlnění, asi by to vypadalo hodně podobně, ale foton je foton :-D

 
Nahoru Odpovědět  +1 12.4.2015 12:49
Avatar
Odpovídá na coells
Luboš Běhounek (Satik):

A ještě tam neuvažuju červený posun :D

Nahoru Odpovědět  +1 12.4.2015 13:32
:)
Avatar
coells
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
coells:

Pokud se nepohybuješ rychlostí blízkou rychlosti světla, tak to neřeš...

 
Nahoru Odpovědět  +1 12.4.2015 13:35
Avatar
Odpovídá na coells
Luboš Běhounek (Satik):

To v zadání nebylo upřesněno, jak rychle se pozorovatel pohybuje.

Nahoru Odpovědět 12.4.2015 13:48
:)
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Zdeněk Pavlátka:

Jelikož je spousta odevzdaných výtvorů a už moc nestíhám, bude ohodnocení zítra večer.

Nahoru Odpovědět 12.4.2015 18:53
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na Zdeněk Pavlátka
Petr Čech (czubehead):

Ještě k mému výtvoru: jestli to nebude fungovat, sniž kvalitu někam kolem 50, a chybu ~1, potom by to mělo fungovat bez problémů.

Nahoru Odpovědět 12.4.2015 19:00
Why so serious? -Joker
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Zdeněk Pavlátka:

Tak tedy hodnocení :) :
Luboš Běhounek (Satik) :
takhle nějak bych si výsledek představoval

Petr Čech (czubehead) :
funguje dobře při menším max poloměru světla, při vyšším to "zrní" - viz. obrázek, na obrázku je max. poloměr 74

Michael Škrášek :
Vypadá to dobře, jen u větších obrázků to spadne (out of memory exception)
Nechápu, proč dveře mají mít podle kódu barvu #0026ff, já tam používal #0000ff

Placku vyhrává Luboš Běhounek (Satik) . Výtvor tedy publikuj a o placku si napiš do PM.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět  +1 13.4.2015 20:23
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na Zdeněk Pavlátka
Petr Čech (czubehead):

Jo, věděl jsem o tom, ale nemohl jsem najít chybu a s časem jsem na tom byl bídně, tak jsem doufal, že to nebudeš tak moc pokoušet :D

Nahoru Odpovědět  +1 13.4.2015 20:58
Why so serious? -Joker
Avatar
Odpovídá na Zdeněk Pavlátka
Michael Škrášek:

S tou barvou ... nevěděl jsem co je to za barvu, a tak jsem při kliknutí nechal ukázat barvu a ukázala se tato. Ale fungovalo to i přes to, tak nevím. Každopádně bylo jasné jak to dopadne :D

Nahoru Odpovědět 13.4.2015 21:32
Proč to dělat složitě, když to jde jednoduše.
Avatar
Odpovídá na Zdeněk Pavlátka
Petr Čech (czubehead):

Ještě by mě zajímalo, jak moc spatne/dobře je napsaný samotný kód?

Nahoru Odpovědět 13.4.2015 22:39
Why so serious? -Joker
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Petr Čech (czubehead)
Zdeněk Pavlátka:

Včera už jsem na podrobnější hodnocení neměl čas, klidně ti podrobnější zhodnocení kódu napíšu do PM. Ale až zítra, dneska budu rád když stihnu ohodnotit druhého machra.

Nahoru Odpovědět  +1 14.4.2015 8:46
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Zdeněk Pavlátka
David Čápka:

Moc pěkná soutěž, jsem rád, že jsi se tu toho chopil :)

Nahoru Odpovědět  +2 14.4.2015 9:46
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
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 46 zpráv z 46.