Simulate Rule 110
Ruby, 113 characters
c=[0]*41
eval"[#{gets}].map{|i|c[i]=1}"+'
c=(0..39).map{|x|putc" X"[u=c[x]]
110[4*c[x-1]+2*u+c[x+1]]}<<0;puts'*40
Takes input on stdin. To use a different rule, simply replace the 110
in the last line with whatever rule you want to try.
Example:
$ ruby 110.rb <<< 38,39
XX
XXX
XX X
XXXXX
XX X
XXX XX
XX X XXX
XXXXXXX X
XX XXX
XXX XX X
XX X XXXXX
XXXXX XX X
XX X XXX XX
XXX XXXX X XXX
XX X XX XXXXX X
XXXXXXXX XX XXX
XX XXXX XX X
XXX XX X XXXXX
XX X XXX XXXX X
XXXXX XX XXX X XX
XX X XXXXX X XX XXX
XXX XX XX XXXXXXXX X
XX X XXXXXX XX XXX
XXXXXXX X XXX XX X
XX X XXXX X XXXXX
XXX XX XX XXX XX X
XX X XXX XXX XX X XXX XX
XXXXX XX XXX XXXXXX XX X XXX
XX X XXXXX XXX XXXXXXXX X
XXX XXXX XXX X XX XXX
XX X XX X XX XXX XXX XX X
XXXXXXXX XX XXXXX X XX X XXXXX
XX XXXXXX XXXXXXXX XX X
XXX XX X XX X XXX XX
XX X XXX XX XXX XX XX X XXX
XXXXX XX X XXXXX X XXXXXXXXXX X
XX X XXXXX XX XXX XX XXX
XXX XX XX XXXX XX X XXX XX X
XX X XXXXXX XX X XXXXX XX X XXXXX
XXXXXX X XXX XXXX XXXXXX XX X
Python - 141
i=input()
o=range(40)
l=''.join(' X'[c in i]for c in o)
for r in o:print l;l=''.join('X '[l[c-1:c+2]in('XXX',' ','X ','',' ')]for c in o)
Run as e.g. python 110.py <<< 38,39
Mathematica, 122 bytes
f[a_]:=Riffle[CellularAutomaton[110,Array[If[MemberQ[ToExpression["{"<>a<>"}"],#-1],1,0]&,40],39]/.0->" "/.1->"X","
"]<>""
Yes, you might view this as abusing this loophole, but a) that loophole is quite disputed, b) a Cellular Automaton question needs a Mathematica answer (especially one about Rule 110) and c) Ventero's Ruby answer is shorter anyway, so I don't think any harm is done.
Most of the characters are used for input parsing and output formatting. The actual automaton is simulated using
CellularAutomaton[110,initialGrid,39]
This uses periodic boundary conditions (so the grid wraps around).