Algorithms for Life