• lua算法(连载)


    题目一、给一个表,表里有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
  • 相关阅读:
    关于轨道交通的一些知识点和关键词
    关于芯片的一些关键词
    关于ADC采集
    Linux记录
    在VMware运行Linux下,密码错误的原因
    气体传感器
    AD采集问题
    Maven [ERROR] 不再支持源选项 5,请使用 7 或更高版本的解决办法
    Maven 专题(九):后记
    Maven 专题(六):Maven核心概念详解(二)
  • 原文地址:https://www.cnblogs.com/jierism/p/6657737.html
Copyright © 2020-2023  润新知