local a=http.get"https://pastebin.com/raw/ujchRSnU"local b=fs.open("blittle","w")b.write(a.readAll())a.close()b.close() os.loadAPI "blittle" -- evil but necessary local function make_board(w, h) local board = {} for x = 0, w do board[x] = {} for z = 0, h do local pick = false if math.random() < 0.5 then pick = true end board[x][z] = pick end end board.width = w board.height = h return board end local function wrap(n, max) return n % max end local function get_neighbours(board, x, y, w, h) local total = 0 for dx = -1, 1 do for dy = -1, 1 do if not (dx == 0 and dy == 0) then local thing = 0 if board[wrap(x + dx, w)][wrap(y + dy, h)] then thing = 1 end total = total + thing end end end return total end local function update(board, new_board) for x = 0, board.width do for y = 0, board.height do local alive_now = board[x][y] local alive_next local neighbours = get_neighbours(board, x, y, board.width, board.height) if alive_now then alive_next = neighbours == 2 or neighbours == 3 else alive_next = neighbours == 3 end new_board[x][y] = alive_next end end return new_board end local blterm = blittle.createWindow(term.current(), 1, 1, raww, rawh, false) local function draw(board) blterm.setVisible(false) for x = 0, board.height do blterm.setCursorPos(1, x) local cols = "" for z = 0, board.width do local color = colors.black if board[z][x] then cols = cols .. "0" else cols = cols .. "f" end end blterm.blit(nil, nil, cols) end blterm.setVisible(true) end local w, h = blterm.getSize() local b1, b2 = make_board(w, h), make_board(w, h) local gens = 0 while true do draw(b1) update(b1, b2) b1, b2 = b2, b1 gens = gens + 1 if gens % 100 == 0 then b1 = make_board(w, h) end sleep(0.1) end