one rule: each cell looks at the two cells diagonally above it and xors them. that's the whole program. one lit seed cell at the top, run downward, and a sierpinski triangle falls out. no randomness, no tuning, no second rule.