Skip to content

Instantly share code, notes, and snippets.

@Kanst
Created November 29, 2012 19:35
Show Gist options
  • Save Kanst/4171305 to your computer and use it in GitHub Desktop.
Save Kanst/4171305 to your computer and use it in GitHub Desktop.
modelir_dz2
#!/usr/bin/python
# -*- coding: utf-8 -*-
def sum(len,a,b):
if len==2:
aplusb=[[0,1],[1,1]]
elif len == 3:
aplusb=[[0,1,2],[1,1,1],[2,1,2]]
elif len == 5:
aplusb=[[0,1,2,3,4],[1,1,1,1,1],[2,1,2,2,2],[3,1,2,3,2],[4,1,2,2,4]]
res = aplusb[a][b]
return res
def proizv(len,a,b):
if len == 2:
aproizvb = [[0,0],[0,1]]
elif len == 3:
aproizvb = [[0,0,0],[0,1,2],[0,2,2]]
elif len == 5:
aproizvb = [[0,0,0,0,0],[0,1,2,3,4],[0,2,2,2,2],[0,2,2,3,2],[0,4,2,2,4]]
res = aproizvb[a][b]
return res
def inver(len,a):
if len == 2:
ainver = [1,0]
elif len == 3:
ainver = [1,0,2]
elif len == 5:
ainver = [1,0,2,4,3]
res = ainver[a]
return res
def perechod(len,a,b):
if len == 3:
aperb = [[0,2],[2,1]]
elif len == 5:
aperb = [[0,4],[3,1]]
elif len == 2:
aperb = [[0,0],[0,0]]
res = aperb[a][b]
return res
def prinres(x,st):
print st, x[0], ' -> ', x[2], ' -> ', x[1]
def schetumn(len, a,b,stt,ne):
res = []
if ne == 0:
res.append(proizv(len1,a[0],b[0]))
res.append(proizv(len1,a[1],b[1]))
res.append(proizv(len1,a[2],b[2]))
prinres(res,stt)
elif ne == 1:
res.append(inver(len,proizv(len1,a[0],b[0])))
res.append(inver(len,proizv(len1,a[1],b[1])))
res.append(inver(len,proizv(len1,a[2],b[2])))
prinres(res,stt)
return res
def risk():
prov = [
len1 = int(raw_input('len = '))
#a1 = int(raw_input('a = '))
#b1 = int(raw_input('b = '))
#print a1,' + ', b1, ' = ', sum(len1,a1,b1)
#print a1,' * ', b1, ' = ', proizv(len1,a1,b1)
#print 'ne ', a1,' * ', inver(len1,a1)
a = [0,0]
a.append(perechod(len1,a[0],a[1]))
prinres(a,'a: ')
b = [1,0]
b.append(perechod(len1,b[0],b[1]))
prinres(b,'b: ')
c = [1,1]
c.append(perechod(len1,c[0],c[1]))
prinres(c,'c: ')
d = [0,1]
d.append(perechod(len1, d[0], d[1]))
prinres(d,'d: ')
e = [0,1]
e.append(perechod(len1,e[0],e[1]))
prinres(e,'e: ')
f = schetumn(len1, b,d,'f=b*d: ',0)
g = schetumn(len1, c,d,'g=c*d: ',0)
h = schetumn(len1, a,f,'h=a*f: ',1)
m = []
m.append(sum(len1,g[0],f[0]))
m.append(sum(len1,g[1],f[1]))
m.append(sum(len1,g[2],f[2]))
prinres(m,'m=ne(g+f): ')
l = schetumn(len1, f,h,'l=f*h: ',0)
n = schetumn(len1, l,m,'n=l*m: ',0)
k = schetumn(len1, m,l,'k=ne(m*l): ',1)
s = schetumn(len1, n,l,'s=n*l: ',0)
r = []
r.append(sum(len1, sum(len1,s[0],k[0]), h[0]))
r.append(sum(len1, sum(len1,s[1],k[1]), h[1]))
r.append(sum(len1, sum(len1,s[2],k[2]), h[2]))
prinres(r,'r=s+k+h: ')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment