aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 9390|回复: 8

求提取连续整数

[复制链接]

4

主题

48

回帖

288

积分

荣誉会员

积分
288
QQ
发表于 2017-6-1 09:44:16 | 显示全部楼层 |阅读模式
本帖最后由 wjz 于 2017-6-1 09:49 编辑

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

import console
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)
console.log(table.tostring(tab_slice))       
//tab={4;5;7;8;9;10;12}         遇到这种不符合要求的不要提出

10

主题

66

回帖

654

积分

三级会员

积分
654
发表于 2017-6-1 10:41:29 | 显示全部楼层
  1. import console

  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.                                 console.log(table.tostring(tab))      
  19.                                 console.log("连续的数字:")  
  20.                                 for(k=i;i+4;1){       
  21.                                         console.log(tab[k])   
  22.                                 }
  23.                         }         
  24.                 }
  25.         }
  26. }

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

  29. console.pause()  
复制代码

4

主题

48

回帖

288

积分

荣誉会员

积分
288
QQ
 楼主| 发表于 2017-6-1 11:11:06 | 显示全部楼层

谢谢楼上大哥的帮忙,如果数组是 5-7位的  按最大排序输出,又怎么改呢。

10

主题

66

回帖

654

积分

三级会员

积分
654
发表于 2017-6-1 14:38:39 | 显示全部楼层
本帖最后由 alajia 于 2017-6-1 14:44 编辑

是这个意思么?
  1. import console

  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.                                 console.log(table.tostring(tab));      
  22.                                 console.log("连续的数字:")  
  23.                                 for(k=i;i+4;1){       
  24.                                         console.log(tab[k]);   
  25.                                 }
  26.                                 if(i+5 <= #tab and tab[i+5] - tab[i+4] == 1){
  27.                                         console.log(tab[i+5]);
  28.                                         if(i+6 <= #tab and tab[i+6] - tab[i+5] == 1){
  29.                                                 console.log(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. console.pause()          
复制代码

4

主题

48

回帖

288

积分

荣誉会员

积分
288
QQ
 楼主| 发表于 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个数字的时候 就不对了

10

主题

66

回帖

654

积分

三级会员

积分
654
发表于 2017-6-2 09:27:37 | 显示全部楼层
for(i=1;3;1) 修改为 for(i=1;#tab-4;1)

4

主题

48

回帖

288

积分

荣誉会员

积分
288
QQ
 楼主| 发表于 2017-6-2 10:27:28 | 显示全部楼层
alajia 发表于 2017-6-2 09:27
for(i=1;3;1) 修改为 for(i=1;#tab-4;1)

不错!再次谢谢你了!

0

主题

18

回帖

110

积分

一级会员

积分
110
发表于 2017-6-2 11:00:08 | 显示全部楼层
思路不错,有所收获。先粗筛再细筛

2

主题

21

回帖

161

积分

一级会员

积分
161
发表于 2017-11-9 22:32:55 | 显示全部楼层
有那么复杂吗?几十行代码

  1. import console;
  2. tab={33;34;8;9;10;35;36;50;80;4;6;7;12;22;32;}
  3. table.sort(tab)
  4. for(i=1;#tab-1;1){
  5.         if tab[i+1]-tab[ i ]=1{
  6.                 j:=i
  7.                 if i+1-j>3 {
  8.                         var tmpTab=table.slice(tab,j,i+1)       
  9.                         console.varDump(tmpTab)
  10.                 }
  11.         }else {
  12.                 j=null;
  13.         }
  14. }
  15. console.pause(true);
复制代码
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-4-18 18:29 , Processed in 0.061355 second(s), 23 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

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