-- Made for use with NotSoBot -- Original version: https://pastebin.com/g2T2mHcE math.randomseed(os.time()) local grid_width = tonumber("{arg:0}") or 9 local difficulty = (tonumber("{arg:1}") or 15) / 100 local grid, numbers = {}, { [0] = ":white_large_square:", ":one:", ":two:", ":three:", ":four:", ":five:", ":six:", ":seven:", ":eight:", ":bomb:", } local neighbour_offsets = { {-1, 0, 1, -1, 1, -1, 0, 1}, {-1, -1, -1, 0, 0, 1, 1, 1}, } for i = 0, grid_width^2 - 1 do if math.random() <= difficulty then local x = i % grid_width local y = math.floor(i / grid_width) grid[i] = 9 for j = 1, 8 do local x = x + neighbour_offsets[1][j] local y = y + neighbour_offsets[2][j] if x >= 0 and x < grid_width and y >= 0 and y < grid_width then local k = y * grid_width + x local count = grid[k] or 0 if count < 9 then grid[k] = count + 1 end end end end end for i = 0, grid_width^2 - 1 do grid[i] = numbers[grid[i] or 0] if (i + 1) % grid_width == 0 then print("||" .. table.concat(grid, "||||", i - grid_width + 1, i) .. "||") end end