====== Dilema III ======
===== Program =====
* Řešení DU
* Diskuze kódu hráče vezňova dilematu
* Testík
* Procvičení objektů
* Hádanka
===== Doplnění zadání PD =====
viz
* https://cw.felk.cvut.cz/forum/thread-2979-post-12617.html#pid12617
* https://cw.felk.cvut.cz/forum/thread-2979-post-12631.html#pid12631
/*
===== Diskuse odevzdaných hráčů PD =====
[[https://cw.felk.cvut.cz/cmp/courses/a4b99rph/pages/pd_tournaments/tournament11a/index.html|Turnaj]] se základním hráči. Analyzujte s rozvahou, viz diskuse na cvičení (množství podvádějících vs. kooperujících hráčů, ...)
> {{page>courses:a4b99rph:internal:cviceni:tyden04#priklad_1&editbtn}}
> {{page>courses:a4b99rph:internal:cviceni:tyden04#priklad_2&editbtn}}
*
===== Hádanka =====
> {{page>courses:b4b33rph:internal:puzzles#cviceni_4}}
===== (Ne tak úplně) Vězňovo dilema v praxi =====
Velmi zajímavá rozuzlení!
http://www.youtube.com/watch?v=p3Uos2fzIJ0
http://www.youtube.com/watch?v=S0qjK3TWZE8#!a
===== Jak splnit zadání úlohy =====
Několik základních kontrolních bodů, kterých je rozumné se držet:
* správně pojmenovat soubor
* správně pojmenovat třídu a metody
* správné parametry metody (self)!
* výstup metody
* správné odsazení
* neprepisovat vnitřní proměnné
> {{page>courses:a4b99rph:internal:cviceni:tyden04#jak_naucit_studenty_splnit_zadani&editbtn}}
===== Programovací testík =====
Zadání testíku 2 v interní části stránek.
===== Programovací úlohy na cvičení =====
Programujte samostatně a ptejte se cvičícího. Snažte se o eleganci. Rozmyslete si trochu řešení předem, třeba na papír.
* Vytvořte funkci na výpis dvourozměrného seznamu(listu) ''print_data(data)'':
* funkce má jako parametr libovolně velký ale dvourozměrný seznam
* vytvořte funkci na vytvoreni dvourozměrneho seznamu s náhodným rozmístěním nul a jedniček například pomocí funkce ([[https://docs.python.org/3/library/random.html#random.randint|randint]])
* otestujte funkci na vytvořeném seznamu
Pokud jste hotoví, začněte pracovat na programovací úloze z domácího úkolu.
====== Domácí úkol ======
Nadcházející neděli do 23:59:59 je třeba odevzdat PD hráče pro turnaj. [[courses:a4b99rph:cviceni:veznovo_dilema:specifikace]]
===== Programování =====
* Pokuste se naprogramovat funkci ''line_size(r,c,data)'' která bude počítat velikost oblasti v řádku zaměřeném pozicí ''r'', ''c''. Oblastí je myšlena nepřerušovaná část 2d seznamu (v tomto případě řádku) se stejnou hodnotou v okolí zadané pozice, tedy stejnou hodnotou jako je v ''data[r][c]''. Parametr ''data'' je dvourozměrný seznam nul a jedniče, ''r'' určuje řádek a ''c'' sloupec odkud se má velikost oblasti počítat. Hodnota oblasti(buď 0 nebo 1) je určena hodnotou ''data[r][c]''. Návratovou hodnotou funkce je počet jedniček nebo nul v dané oblasti.
* Rozmyslete jak by se dala funkce napsat tak, aby mohla případně počítat nejen v řádcích ale v obecném směru - (sloupcích, na diagonále).
* Příklad:
r=5
c=5
data = [ \
[0, 1, 1, 1, 1, 0, 0, 0 ] , \
[1, 1, 0, 1, 0, 1, 1, 1 ] , \
[0, 1, 1, 0, 0, 1, 0, 1 ] , \
[1, 1, 1, 0, 1, 1, 0, 1 ] , \
[0, 1, 0, 0, 0, 0, 1, 1 ] , \
[1, 0, 1, 1, 0, 0, 0, 0 ] , \
[0, 1, 1, 1, 0, 1, 1, 1 ] , \
[1, 1, 0, 1, 0, 1, 1, 1 ]]
reg_size = line_size(r , c, data)
print(reg_size)
4