## Ruby, 128 characters <!-- language: lang-ruby --> c=[0]*41 eval("[#{gets}]").map{|i|c[i]=1} (r=0..39).map{puts r.map{|i|" X"[c[i]]}*"" c=r.map{|x|110[4*c[x-1]+2*c[x]+c[x+1]]}<<0} 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