题目一、给一个表,表里有5个数,在[0-13]之间,其中0可以表示任意数,判断这个表是否连续?
思路:
连续的条件:
1、表中都是0
2、表中有4个0
3、0个数不大于3,经过排序之后除去0之外,最大值减去最小值的差小于5
注意:要排除掉除去0之外的数里面有相同的数
local list = {0,0,2,5,1}
function toCheck ()
table.sort(list) -- 把数组从小到大排序
local zero_num = 0
for k,v in pairs(list) do
if v == 0 then
zero_num = zero_num + 1
elseif v ~= 0 then
for i = k+1,#list do
if v == list[i] then
print("该表不连续")
return
end
end
end
end
if zero_num == 4 or zero_num ==5 then
print("该表连续")
elseif list[#list] - list[zero_num + 1] < 5 then
print("该表连续")
else
print("该表不连续")
end
end
toCheck()
题目二、如何将一组数据等概率打乱?
t = {1,2,3,4,5,6,7,8,9}
local function shuffle(t)
if not t then return end
local cnt = #t
for i=1,cnt do
local j = math.random(i,cnt)
t[i],t[j] = t[j],t[i]
end
end
shuffle(t)
for k,v in pairs(t) do
print(v)
end
题目三、将一个数组从小到大排序,然后将重复出现的数字全部删除(后续数字往前移)
local t = {4,2,3,4,1,6,5,8,7}
local newArray = {}
table.sort(t)
newArray[1] = t[1]
for i = 2,#t do
if t[i] ~= t[i - 1] then
newArray[i] = t[i]
end
end
for k,v in pairs(newArray) do
print(v)
end
题目四、编写一个函数,将某个数组分成两个数组,一个存放偶数,一个存放奇数
local t = {4,2,3,4,1,6,5,8,7}
function device(array)
local oushuArr = {}
local jishuArr = {}
for i = 1,#array do
if t[i] % 2 == 0 then
oushuArr[#oushuArr + 1] = array[i]
else
jishuArr[#jishuArr + 1] = array[i]
end
end
return oushuArr,jishuArr
end
local a,b = device(t)
for k,v in pairs(a) do
print(v)
end
print("=========")
for k,v in pairs(b) do
print(v)
end
一、Lua简介及应用
- 想像你住在一栋装潢完毕的别墅里,却可以通过手中的平板任意修改房间布局、家具摆放和色彩格调,只要有足够的资源和强大的架构手段,将别墅变成巴比伦空中花园也未尝不可能。 Lua就是类似于你手中平板一样的工具。
- Lua设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
- Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。
- Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言,可用于编写各种插件。
- Lua具有轻便小巧、可扩展性高、运行效率高等特点。
- 再说应用,当前Lua在游戏领域可谓大放异彩,从早期的各种游戏插件,到现在成熟的Lua热更新框架,特别在大型联网游戏方面:
- Lua热更新技术让安装客户端异常小巧(你没发现那些刚开始只有几十或几百兆的游戏玩一段时间后就有几个G了吗),开发人员不用再为策划永无止境的游戏活动焦头烂额(每逢节假日和一些奇怪的节日可以高效地掏空玩家的钱包)。