Tetris by

s,w,t,o,z,l=[],10,'#','1','0',' '
e=' '*w
while len(s)<15:
    s+=[raw_input()]
i=s.index(e)
s=[k.replace(t,o).replace(l, z) for k in s]
b=s[:i]
for k in range(i):s[k]=z*w
try:
    for i in range(1,16-len(b)):
        for k in range(len(b)):
            if (int(s[i+k],2)&int(b[k],2))!=0: i=i-1;raise ValueError
except: pass
for k in range(len(b)):        
    s[i+k]=bin((int(s[i+k],2)|int(b[k],2)))[2:]
s=[i.rjust(w).replace(o,t).replace(z, l) for i in s]
f=t*w
while f in s: s.remove(f)
s=[e]*(15-len(s))+s
print'\n'.join(s)

Note that non-ascii characters in the above source code will be escaped (such as \x9f).

download

return to the top page