map = "" WIDTH = 20 HEIGHT = 10 fn create{ repeat(HEIGHT){ y = _ repeat(WIDTH){ x = _ if(rnd % 2 == 0){ block = "#" } else{ block = "." } map = map .. block } } } create() fn draw{ buffer = "" repeat(HEIGHT){ y = _ repeat(WIDTH){ x = _ index = x + y * WIDTH getChar(char, map, index) if(char == "#"){ buffer = buffer .. "#" } else { buffer = buffer .. ".." } } buffer = buffer .. "\n" } print(buffer) } draw() repeat(10){ buffer = "" for(y = 0; y < HEIGHT; y++){ for(x = 0; x < WIDTH; x++){ count = 0 for(y_ = -1; y_ <= 1; y_++){ for(x_ = -1; x_ <= 1; x_++){ if(x_ == 0 and y_ == 0){} else { if( x + x_ >= 0 and x + x_ < WIDTH and y + y_ >= 0 and y + y_ < HEIGHT ){ i = (x + x_) + (y + y_) * WIDTH getChar(char, map, i) if(char == "#"){ count++ } } } } } i = x + y * WIDTH getChar(char, map, i) if(count == 3){ buffer = buffer .. "#" } else { if(count == 2 and char == "#"){ buffer = buffer .. "#" } else { buffer = buffer .. "." } } } } map = buffer draw() }