Artisanal tutorials since 1999
(It's NP's webcomic)

Grand Theft Crouton

I wrote Tetris in Python 2.6 and PyGame. The code is under 2 KB (1920 bytes).

Let me preface this by saying this is not the correct way to write code in general. This was purely for shits-n-giggles.

```import random as n
import pygame
from pygame import *
def k(w,h):return m(lambda x:[0]*h,' '*w)
def cg(g):return m(lambda x:x[:],g)
def ro(o,c,r):return o if r<1 else ro(m(lambda x:m(lambda y:o[y][3-x-1+c],b(4)),b(4)),c,r-1)
def mo(o):
p=n.choice(m(lambda x:[x%3+1,x in(0,3),m(lambda y:ord(y)-97,'bfjn cgkj bfjk fgjk cgfj bfgk befg'.split()[x])],b(7)))
for t in p[2]:o[t%4][t/4]=p[0]
return o,p[1]
m,b,v,z,L=map,range,filter,255,len
def q(a,o,x,y,n=1):
g=cg(a)
for c in b(16):
tx,ty,p=c%4+x,c/4+y,o[c%4][c/4]
if p:
if tx<0 or tx>9 or ty>19 or (a[tx][ty] and n):return 3
g[tx][ty]=p
return g
def cl(r,l,t=lambda g:m(lambda x:m(lambda y:g[y][x],b(L(g))),b(L(g[0])))):
r=v(lambda x:0 in x,t(r))
return t([[0]*10]*(20-L(r))+r),l+20-L(r)
def dm(o,a,ox,oy,dx,dy):
ox=ox if q(a,o,ox+dx,oy)==3 else ox+dx
return(a,o,ox,oy+dy)if(dy==0 or q(a,o,ox,oy+dy)!=3)else(q(a,o,ox,oy),3,ox,0)
def mn(e,s,a,o,ox,oy,fc,ck,cn,l,dr,j,t,f):
while not('12-Quit'in e or"y': 27,"in e):
fc,d,y,e=fc+1+5*key.get_pressed()[274]+l/15,((l/10)%7),'0201120 0020110 2001022 0222101 1120011 0000202'.split(),str(v(lambda x:x.type!=3,event.get()))
c=[[0]*3,[z]*3]+[m(lambda x:127*int(y[:3][x][d]),b(3)),m(lambda x:127*int(y[3:][x][d]),b(3))]
dx=-1 if("y': 276"in e)else 1 if("y': 275"in e)else 0
ox,oy=(3,0)if o==3 else (ox,oy)
o,cn = (o,cn) if o!=3 else mo(k(4,4))
r=3 if("y': 32,"in e)else 1 if("y': 273"in e)else 0
o=ro(o,cn,r)
o=o if q(a,o,ox,oy)!=3 else ro(o,cn,4-r)
a,o,ox,oy=dm(o,a,ox,oy,dx,(fc>30)+0)
fc=fc*(fc<31)
ra=a if o==3 else q(a,o,ox,oy,0)
if ra==3:return
a,l=(a,l)if o!=3 else cl(a,l)
s.fill(c[0])
for y in b(200):dr(s,c[ra[y%10][y/10]],Rect((y%10)*15+j,t+(y/10)*15,15,15))
dr(s,c[1],Rect(j,t,151,301),1),s.blit(f.render("Lines: "+str(l),0,c[1]),(j,t/2)),display.flip(),ck.tick(60)
mn(init(),display.set_mode((640,480)),k(10,20),3,0,0,0,time.Clock(),1,0,draw.rect,245,85,font.Font(None,24))```

But that code doesn't look exciting at all. So I spiced it up a bit:

```import  random  as  n
def k(w,h): return m(
lambda x:[0]*h,' '*w)
def cg( g): return m(
lambda x: x[ : ], g )
from  pygame import *
def mo(neato = None):
p,z,e=n.choice(m(lambda x:[x %
3+1,x in(0,3),m(lambda y: ord(
y)-97,('bfjn cgkj bfjk fgjk '+
'cgfj bfg'+'k befg' ).split()[
x]) ], b(7))), neato, range(3)
for t in p[2]:z[t%4][t/4]=p[0]
return (None, neato, p[1])[1:]

def ro(o, c, r):
return  o  if (
r < 1) else ro(
m( lambda x: m(
lambda y : o[ y
][3 - x - 1+c],
b(4)), b( 4 )),
c, r-1 + L([]))
m,b, L,v,z,Q = (
map, range,len,
filter, 255,42)
def q(a, o, x,y,
n=1, z = None):
g, z=cg(a),None
for c in b(16):
tx,ty,p=(c %4+
x,c / 4 + y, o[
c % 4] [c / 4])
if p:#Hi there
if(tx<0 or tx
>9 or ty>19 or(
a[tx][ty] and n
)): return 2+1
g[tx][ty] = p
return [g,1][0]

def mn(e, s, a, o, ox, oy, fc, ck, cn, l, dr, j, t, f, x=32):
cc, kgp = (('0201120 0020110 2001022 0222101 1120011 0000202'
).split(),key.get_pressed,None, lambda x:(x[:],None,16))[:2]
while not (('12-Quit' in e) or "y': 27, " in e or((kgp()[308
] or key.get_pressed()[307]) and ", ', 'key': 285," in e )):
fc, d,y,e=(fc + 1 +
5 * kgp()[274]+l/15,(
(l/10)%7), cc, str(v(
lambda x: x.type !=3,
event.get( ))), None,
L,Q, 16, None, L)[:4]
c=[[0]*3,[z]*3] + [
m(lambda x: 127 *int(

y[ :3][x][d] ), b(3)), m(lambda x: z / 2 * int(
y[3: ][x][d]), b(3))][ : L([None, None, None])]
dx = -1 if ("y': 276" in e) else 1 if( "y': " +
"275" in e) else ( sum(b(8)[-1:][:0]) * 16 * z)
ox,oy = (3, 0) if o == L(b(1+ 2)) else (ox, oy)
o, cn = (o, cn)[:] if o != 3  else mo( k(4, 4))
r = 3 if ("y': 32," in e) else (1 if( "y': 273"
in e) else (L(a[ :]) * (z - 255) * L(e + '.')))
o=ro(o,cn, [r, None, b(1), e == 'True'][:1][0])
o=o if q(a, o, ox,oy) !=3 else ro(o, cn, 4 - r)
a, o, ox, oy=dm(o, a, ox, oy, dx,(fc > 30) + 0)
fc = fc * (fc < (z - 224)) + 80 / z + L([z])- 1
ra = a if o == L(b(3)) else q( a, o, ox, oy, 0)
if ra ==(9/3): return [a, ra, o, ox, oy, cn, z]
a,l = (a, l) if o != L(b(z / 80)) else cl(a, l)
df,ckt=(display.flip, s.fill(c[0]))[0], ck.tick
for y in b(200):  dr( s, c[ra[y % 10][y / 10]],
Rect((y % 10)*15 + j, t+(y / 10) * 15, 15, 15))
dr(s,c[1],Rect(j,t,151,301),1),s.blit(f.render(
"Lines: " +str(l),0,c[1]),(j,t/2)),df(),ckt(60)

def cl (r, l, tw =
lambda g: m(lambda
x: m( lambda y :g[
y][x ], b( L(g))),
b( L( g[1- 1])))):
r = v( lambda x:0
in [x ][0],tw(r))
return (tw([[ 0]*
10]*(20-L(r))+r),
l+20-L(r),'')[:2]
def dm(o, a, ox, oy, dx, dy, t=None,y=0):
ox=ox if q(a, o,ox + dx,oy)==3 else(ox +
dx+L(b(0)[:])) # Written by Blake O'Hare
return(a, o,ox, oy+dy) if (dy==0 or q(a,
o,ox, oy + dy)!=3) else(q(a, o, ox, oy),
3, ox, 0, None, [0] *3, z, z, 0, 16)[:4]
mn(init(), [display.set_mode((z/255* 640,
480))][:1][z /256],
k(10, 20), 3, 0, 0,
L([]),time.Clock(),
1,z/256, draw.rect,
245, 85, font.Font(
None, 24)), b(6)[:]```

I had to add some neutral gibberish to get it neatly formatted, but yes, it still runs. No semicolons, either!