Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
courses:a4b35ko:ukol1 [2010/02/16 23:33] r.polasek created |
courses:a4b35ko:ukol1 [2025/01/03 18:28] (aktuální) |
||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
====== 1. úkol ====== | ====== 1. úkol ====== | ||
+ | Sudoku | ||
+ | ==== Řešení pro obecné p ==== | ||
+ | <code> | ||
+ | p = 2; | ||
+ | p2 = p^2; | ||
+ | p4 = p^4; | ||
+ | p3 = p^3; | ||
+ | B = zeros(p4,p4); | ||
+ | |||
+ | |||
+ | for i=1:p4 | ||
+ | radek = ceil(i/p2); | ||
+ | sloupec = mod(i,p2); | ||
+ | if(sloupec==0) | ||
+ | sloupec = p2; | ||
+ | end | ||
+ | |||
+ | %radek | ||
+ | pocitadlo = 0; | ||
+ | maxIndex = p2*radek; | ||
+ | for u=1:p2 | ||
+ | B(i,maxIndex-pocitadlo) = 1; | ||
+ | pocitadlo= pocitadlo+1; | ||
+ | end | ||
+ | |||
+ | %sloupec | ||
+ | pocitadlo = 0; | ||
+ | for v=1:p2 | ||
+ | B(i,sloupec+pocitadlo*p2) = 1; | ||
+ | pocitadlo= pocitadlo+1; | ||
+ | end | ||
+ | | ||
+ | |||
+ | cisloBunky = (floor((radek-1)/p))*p + floor((sloupec-1)/p)+1; | ||
+ | radekBunky = ceil(cisloBunky/p); | ||
+ | poradiBunkyNaRadku = cisloBunky - (p*(radekBunky-1)); | ||
+ | pocetBunekNaStejnemRadku = poradiBunkyNaRadku-1; | ||
+ | pocetBunekNaPredchozRadkach = cisloBunky - pocetBunekNaStejnemRadku -1; | ||
+ | |||
+ | sourPrvniBodBunky = pocetBunekNaPredchozRadkach*p2 + pocetBunekNaStejnemRadku*p + 1; | ||
+ | |||
+ | for j=1:p | ||
+ | for g=1:p | ||
+ | pos = sourPrvniBodBunky+((j-1)*p2) + (g-1); | ||
+ | B(i,pos) = 1; | ||
+ | end | ||
+ | end | ||
+ | B(i,i) = 0; | ||
+ | |||
+ | end | ||
+ | |||
+ | g = graph('adj', B); | ||
+ | g = graphcoloring(g); | ||
+ | prumer = 20; | ||
+ | x = 100; | ||
+ | y = p2*prumer+(p2*10); | ||
+ | krok = 1; | ||
+ | |||
+ | for k=1:p4 | ||
+ | g.N(k).Name = ''; | ||
+ | g.N(k).graphicParam(1).width = prumer; | ||
+ | g.N(k).graphicParam(1).height = prumer; | ||
+ | g.N(k).graphicParam(1).x = x+(prumer+3)*(krok-1); | ||
+ | g.N(k).graphicParam(1).y = y; | ||
+ | krok=krok+1; | ||
+ | if(mod(k,p2)== 0) | ||
+ | y = y-(prumer*1.25); | ||
+ | krok=1; | ||
+ | end | ||
+ | end | ||
+ | |||
+ | g.adj = zeros(p4,p4); | ||
+ | graphedit(g) | ||
+ | graphedit('viewedgesnames', 'off','viewnodesnames', 'off','arrowsvisibility', 'off') | ||
+ | |||
+ | |||
+ | |||
+ | % for i=1:p4 | ||
+ | % %vem 1 radek a vypis po | ||
+ | % line=0; | ||
+ | % A = zeros(p2,p2); | ||
+ | % for j=1:p2 | ||
+ | % A(j,:)= B(i,line+1:line+p2); | ||
+ | % line = line+p2; | ||
+ | % end | ||
+ | % i | ||
+ | % A | ||
+ | % end | ||
+ | |||
+ | </code> | ||