搜索
aardio官方社区 门户 查看主题

求提取连续整数

发布者: wjz | 发布时间: 2017-6-1 09:44| 查看数: 426| 评论数: 7|帖子模式

本帖最后由 wjz 于 2017-6-1 09:49 编辑

数组里面有7个整数,如果其中有5个是连续的数字,就提取出来。写了下面代码,不太对,求助大家帮忙分析下。

io.open()
tab={4;6;7;8;9;10;12}
comProc = function(b) {
        return owner > b ;
}
table.sort(tab,comProc)
j=0
for(ii=1;#tab-1;1){
        if(tab[ii]-tab[ii+1]=1){
                j++       
        }
}
if(tonumber(j)>=4 and tab[3]-tab[4]=1 and tab[4]-tab[5]=1 ){
           sindex=3;eindex=7
        if(tab[1]-tab[2]=1 and tab[2]-tab[3]=1 and tab[3]-tab[4]=1 ){
                sindex=1;eindex=5
        }
}

tab_slice=table.slice(tab,sindex,eindex)
io.print(table.tostring(tab_slice))       
//tab={4;5;7;8;9;10;12}         遇到这种不符合要求的不要提出

最新评论

alajia 发表于 2017-6-1 10:41:29
  1. io.open()

  2. tab1 = {4;6;7;8;9;10;12}
  3. tab2 = {4;5;7;8;9;10;12}

  4. comProc = function(b) {
  5.         return owner < b ;
  6. }

  7. seleProc = function(tab) {
  8.         table.sort(tab,comProc)
  9.         c = 1;
  10.         for(i=1;3;1){
  11.                 if(tab[i+4] - tab[i] == 4){
  12.                         for(j=i;i+3;1){
  13.                                 if(tab[j+1] - tab[j] != 1){
  14.                                         c = 0;
  15.                                 }                 
  16.                         }
  17.                         if(c){
  18.                                 io.print(table.tostring(tab))      
  19.                                 io.print("连续的数字:")  
  20.                                 for(k=i;i+4;1){       
  21.                                         io.print(tab[k])   
  22.                                 }
  23.                         }         
  24.                 }
  25.         }
  26. }

  27. seleProc(tab1);
  28. seleProc(tab2);

  29. execute("pause")  
复制代码
wjz 发表于 2017-6-1 11:11:06

谢谢楼上大哥的帮忙,如果数组是 5-7位的  按最大排序输出,又怎么改呢。
alajia 发表于 2017-6-1 14:38:39
本帖最后由 alajia 于 2017-6-1 14:44 编辑

是这个意思么?
  1. io.open()

  2. tab1 = {4;6;7;8;9;10;12}
  3. tab2 = {4;5;7;8;9;10;12}
  4. tab3 = {4;6;7;8;9;10;11}
  5. tab4 = {5;6;7;8;9;10;12}
  6. tab5 = {5;6;7;8;9;10;11}

  7. comProc = function(b) {
  8.         return owner < b ;
  9. }

  10. seleProc = function(tab) {
  11.         table.sort(tab,comProc)
  12.         c = 1;
  13.         for(i=1;3;1){
  14.                 if(tab[i+4] - tab[i] == 4){
  15.                         for(j=i;i+3;1){
  16.                                 if(tab[j+1] - tab[j] != 1){
  17.                                         c = 0;
  18.                                 }                 
  19.                         }
  20.                         if(c){
  21.                                 io.print(table.tostring(tab));      
  22.                                 io.print("连续的数字:")  
  23.                                 for(k=i;i+4;1){       
  24.                                         io.print(tab[k]);   
  25.                                 }
  26.                                 if(i+5 <= #tab and tab[i+5] - tab[i+4] == 1){
  27.                                         io.print(tab[i+5]);
  28.                                         if(i+6 <= #tab and tab[i+6] - tab[i+5] == 1){
  29.                                                 io.print(tab[i+6]);
  30.                                         }       
  31.                                         i = 3;                                 
  32.                                 }
  33.                         }         
  34.                 }
  35.         }
  36. }

  37. seleProc(tab1);
  38. seleProc(tab2);
  39. seleProc(tab3);
  40. seleProc(tab4);
  41. seleProc(tab5);

  42. execute("pause")          
复制代码
wjz 发表于 2017-6-1 18:03:43
alajia 发表于 2017-6-1 14:38
是这个意思么?

tab1 = {4;6;7;8;9;10;12}
tab2 = {4;5;7;8;9;10}
tab3 = {4;6;7;8;9}
tab4 = {5;6;7;8;9;10;12}
tab5 = {5;6;7;8;9}   
当数组是5 或者6个数字的时候 就不对了
alajia 发表于 2017-6-2 09:27:37
for(i=1;3;1) 修改为 for(i=1;#tab-4;1)
wjz 发表于 2017-6-2 10:27:28
alajia 发表于 2017-6-2 09:27
for(i=1;3;1) 修改为 for(i=1;#tab-4;1)

不错!再次谢谢你了!
oliverpep 发表于 2017-6-2 11:00:08
思路不错,有所收获。先粗筛再细筛

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2017-9-22 07:11 , Processed in 0.062500 second(s), 21 queries , Wincache On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表