===== Cvičení 6 ===== ==== 06a ==== [[ https://youtu.be/EYciQLXkrfE | Life ]] life.txt: a = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 1, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 1, 1, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ] def step(x, b): for r in range(len(b)): for s in range(len(b[0])): cnt=0 for dr in (-1,0,1): for ds in range(-1,2): rr=r+dr ss=s+ds cnt+=x[rr%len(b)][ss%(len(b[0]))] cnt-=x[r][s] if (cnt==2 and x[r][s]>0) or cnt==3: b[r][s]=1 else: b[r][s]=0 return b, x b=[ [0]*len(a[0]) for i in a ] import time for s in range(50): print('------------ STEP', s, '------------') for i in a: print(''.join('X' if p!=0 else ' ' for p in i)) time.sleep(0.4) a, b =step(a, b) ==== 06b ==== [[ https://youtu.be/c9HKbcSB6Gk | Gaussova eliminace ]] gauss.py m=[[12,-7,3, 26], [4 ,5,-6, -5], [-7 ,8,9, 21]] def maximum(m, s): maximum_index = s max_value = abs(m[s][s]) for j in range(s+1,len(m)): if abs(m[j][s])>max_value: max_value = abs(m[j][s]) maximum_index = j return maximum_index def set(m, s): ind = maximum(m, s) if ind!=s: m[ind],m[s] = m[s],m[ind] def do_line(m,s): set(m,s) if m[s][s]!=0: div = m[s][s] for j in range(len(m[s])): m[s][j]=m[s][j]/div print("Krok 1") for i in m: print(*i,sep='\t') for r in range(len(m)): if r!=s: x = m[r][s] for j in range(len(m[r])): m[r][j]=m[r][j]-x*m[s][j] print("Krok 2") for i in m: print(*i,sep='\t') print() return True else: return False def Gauss_elim(m): for s in range(len(m)): if not do_line(m,s): return False return True from fractions import Fraction m_fraction = [list(map(Fraction,v)) for v in m] Gauss_elim(m) for i in m: print(*i,sep='\t') print("Zlomky - Fraction") Gauss_elim(m_fraction) for i in m_fraction: print(*i,sep='\t')