題目一、給一個表,表里有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
