====== Dilema III ====== ===== Program ===== * Řešení DU * Diskuze kódu hráče vezňova dilematu * Testík * Procvičení objektů * Hádanka /* ===== 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>old:courses:a4b99rph:internal:cviceni:tyden04#jak_naucit_studenty_splnit_zadani&editbtn}} PP: Odkaz na staré stránky nefunguje. Informace zde vložené asi nejsou potřeba. */ ===== 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 * funkce by měla vypisovat seznam "čitelně" - tak aby bylo zřejmé v jakém je dané číslo řádku a sloupci * Vytvořte funkci na plnění 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 ''print_data(data)'' 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:b4b33rph: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