对lua表中数据按一定格式处理,循环

function putStartCard(handCard)
        function dataDeal(array,a,b,c)
        cclog("进入datadeal====================================")
        for i=1,#array do
            cclog("array[%d]======%d",i,array[i])
        end
            local result = {}
              if #array >= 3 then
                  for i=1,#array do
                      if a == array[i] then
                          for j=i+1, #array do
                              if b == array[j] then
                                  for k=j+1,#array do
                                    if c == array[k] then
                                      table.insert(result,array[i])
                                      table.insert(result,array[j])
                                      table.insert(result,array[k])
                                      cclog("%d,%d,%d",array[i],array[j],array[k])
                                      table.remove(array,k)
                                      table.remove(array,j)
                                      table.remove(array,i)
                                      cclog("找到2,7,10===============")
                                      cclog("result===%d%d%d",result[1],result[2],result[3])
                                      for ii=1,#array do
                                            cclog("array[%d]=======%d",ii,array[ii])
                                      end
                                      return result
                                     end
                                  end
                              end
                          end
                      end
                  end  
              end 
              cclog("没找到2,7==============")
          return result
       end

      local unUseless = 42 
      local i = nil
      local data = {}
      for j=1, 4 do
          data[j] = {}
      end

      for i=1, 19 do
          for j=1, 20-i do
              if handCard[j] > handCard[j+1] then
                  handCard[j],handCard[j+1] = handCard[j+1],handCard[j]
              end
          end
      end
      cclog("排序后的数据")
      for i=1, 20 do
        cclog("handCard[%d]===============%d",i,handCard[i])
      end

      i = 1
      repeat
          if handCard[i] == handCard[i+1] and handCard[i] == handCard[i+2] and
             handCard[i] == handCard[i+3]                                         then
             cclog("进入data1")
             for j=1, 4 do                                         
                table.insert(data[1],handCard[i])
             end
             cclog("data[i]====%d,%d,%d,%d",data[1][1],data[1][2],data[1][3],data[1][4])

             i = i+4
          elseif handCard[i] == handCard[i+1] and handCard[i] == handCard[i+2]    then
             cclog("进入data2")
             for j=1, 3 do
                table.insert(data[2],handCard[i])
             end
             i = i+3
          
          elseif handCard[i] == handCard[i+1]                                      then
             cclog("进入data3")
              for j=1, 2 do                                 
                table.insert(data[3],handCard[i])
              end
              i = i+2
          else
             cclog("进入data4")
             table.insert(data[4],handCard[i])
             i = i+1
          end
      until(i>20)

        cclog("第二次处理后的数据")
        for i=1,4 do
            for j=1,#data[i] do
                cclog("data[%d][%d]=====%d",i,j,data[i][j])
            end
        end
 ---------------------------------------------------------------------
 --从表中选出,想要的三个数据
      function dataInsert(table1,table2)
          for i=1, #table2 do
              table.insert(table1,table2[i])
          end
      end
      cclog("开始查找2710===========")
      dataInsert(data[2],dataDeal(data[4],12,17,20))
      dataInsert(data[2],dataDeal(data[4],11,12,13))
      dataInsert(data[2],dataDeal(data[4],1,2,3))
      for i=2,17 do
          dataInsert(data[2],dataDeal(data[4],i,i+1,i+2))
      end

    return data
end
    --用于测试
    handCard = {2,3,4,13,5,8,14,7,17,9,6,4,12,5,15,20,10,6,6,11}
     local aa = putStartCard(handCard)
     cclog("aaaaaaaaaaaaaaaaaaaaaaaaaaaa")
        for i=1,4 do
            for j=1,#aa[i] do
                cclog("aa[%d][%d]=======%d",i,j,aa[i][j])
            end
        end
     cclog("aaaaaaaaaaaaaaaaaaaaaaaaaaaa")

将表handCard中数据分为四组4个(相同的数据),3个(同样的数据and2,7,10and顺子),两个(相同的数据),一个(里边有很多数据,但没有重复的,没有顺子)
注意:1.表中数据移除,不可用{}和nil,移除时,表中数据会左移

    2.表中数据插入,插入的是单个数据

        3.repeat循环不可以更改为for循环,for i=1,10 do end 中i只是指定循环次数

      例如:for i=1, 10 do

          i = i+3

          cclog("%d",i)

         end

        输出:4,5,6,7,8,9,10,11,12,13

        上边for循环中的i值失效

         4.lua中没有continue导致程序循环次数过多

posted @ 2017-05-17 20:22  履霜坚冰  阅读(682)  评论(0编辑  收藏  举报