====== Reversi I ====== [[courses:b4b33rph:internal:cviceni:program_po_tydnech:tyden_05|Učitelská verze stránky]] ===== Výsledky učení ===== Po tomto cvičení student * chápe pravidla hry Reversi a umí posoudit platnost tahu; * rozumí rozhraní, které třída MyPlayer musí mít; * umí spustit dodané kódy a otestovat svého hráče na datové sadě; * umí procházet matici (2D seznam) v určitém směru pomocí cyklu ''while''. ===== Program ===== * Dotazy a odpovědi * Krátký programovací testík * Zadání úlohy Reversi a diskuze * Hádanka * Programovací úlohy /* > {{page>courses:b4b33rph:internal:formulare_gdrive}} */ ===== Dotazy a odpovědi ===== * Kolik lidí implementovalo funkci ''line_size(r,c,data)'' pro počítání velikosti oblasti v řádku? * Napadlo někoho univerzální řešení pro hledání v libovolném směru? ===== Programovací testík ===== Zadání 3. testíku se dozvíte na cvičení. ===== Zadání úlohy Reversi ===== * [[courses:b4b33rph:cviceni:reversi:start|Zadání úlohy Reversi]] * Vyjasnění pravidel Reversi a validnosti tahů * Představení [[courses:b4b33rph:cviceni:reversi:start#instrukce_pro_ulohu_reversi|testování korektnosti tahů pomocí datasetu]] ===== Hádanka ===== Zadání hádanky se dozvíte na cvičení. ===== Programovací úlohy ===== * Naimplementujte funkci ''line_column_size(r, c, data)'' rozšířením [[courses:b4b33rph:cviceni:program_po_tydnech:tyden_04#domaci_ukol|domácího úkolu]] tak, aby funkce hledala velikost oblasti nejen v řádku, ale také ve sloupci. * Snažte se o co nejobecnější prohledávání v daném směru. * Máte-li hotovou funkci ''line_column_size(r, c, data)'', zkuste implementovat i funkci ''region_size(r, c, data)'', která bude kromě řádků a sloupců hledat i v diagonálách. * Jak souvisí tato funkce s hrou reversi a hledáním validních tahů? ==== Příklad: line_column_size ==== 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_column_size(r , c, data)
print(reg_size)
5
==== Příklad: region_size ==== r=2
c=6
data = [
[1, 0, 0, 0, 1, 1, 0, 0 ] ,
[1, 1, 1, 0, 0, 1, 1, 1 ] ,
[0, 1, 0, 0, 1, 1, 1, 1 ] ,
[0, 1, 0, 1, 0, 1, 1, 1 ] ,
[0, 1, 1, 0, 0, 0, 1, 1 ] ,
[1, 0, 0, 0, 1, 1, 0, 0 ] ,
[0, 0, 1, 0, 1, 1, 1, 0 ] ,
[0, 0, 1, 0, 1, 0, 1, 0 ]]
reg_size = region_size(r , c, data)
print(reg_size)
12
===== Domácí úkol ===== * Dodělat programovací úlohy z dnešního cvičení. * Začít pracovat na řešení úlohy reversi, tedy na hráči, který umí hrát validně.