import ; main(args(2)) := run(args[1], stringToInt(args[2])) when size(args) = 2 else "Usage error: exec "; stringToCells(string(1))[i] := 0 when string[i] = '_' else 1; cellsToString(cells(1))[i] := '#' when cells[i] = 1 else '_'; run(cellsString(1), generations) := runHelper(stringToCells(cellsString), generations, cellsString); runHelper(cells(1), generations, result(1)) := let nextCells := step(cells); in result when generations = 0 else runHelper(nextCells, generations - 1, result ++ "\n" ++ cellsToString(nextCells)); step(cells(1))[i] := let left := cells[i-1] when i > 1 else 0; right := cells[i + 1] when i < size(cells) else 0; in 1 when (left + cells[i] + right) = 2 else 0;