-1

シーケンス: 1,2,3,...10 式: x = n+1

シーケンスが配列であり、特定の時間シーケンスが最初の 3 つのインデックスに 1,3,5 を含み、残りが 0 であるとします。

次の番号は 2 になり、配列は最初の 4 つのインデックスで 1,2,3,5 になり、残りは 0 になります

次の番号は 4 になり、配列は最初の 5 つのインデックスで 1,2,3,4,5 になり、残りは 0 になります

次の番号は 6 になり、配列は最初の 6 つのインデックスで 1,2,3,5,6 になり、残りは 0 になります

function findNextNumber(numArry) {
    var number = 1;
    var tempArray = new Array();
    for (i = 0; i < 10; i++) {
        tempArray[i] = "E";
    }
    $.each(numArry, function () {
        if (this != 0) {
            tempArray[this] = "F"
        }
    });
    $.each(tempArray, function (index) {
        if (this == "E") {
            number = index + 1;
            return false;
        }
    });
    return number;
}
4

2 に答える 2

1

    function nextHole(array,until) {
      this.array=array;
      this.lastIndex=0;
      this.lastItem=0;
      this.until=until;
      this.loopFinished=false;
      this.done=false;
      this.reset = function(){
          this.lastIndex=0;
          this.lastItem=0;
          this.done=false;
          this.loopFinished=false;
      }

      this.getNext = function(){

        if (this.done){
            return null;
        }

        if (!this.loopFinished){                
            for(loop=this.lastIndex;loop<this.array.length ;loop++){
                if (this.array[loop]!=this.lastItem+1){

                    this.lastItem++;
                    this.lastIndex=loop;
                    if (this.lastItem>until)
                        break;


                    return this.lastItem;
                }else{
                    this.lastItem=this.array[loop];
                }

            }

        }
        this.loopFinished=true;
        if (this.lastItem < this.until){
            return (++this.lastItem);
        }
        this.done=true;
        return null;
      }

    }


    var h = new nextHole([1,2,5,6,7,15],10);
    while(true){
        var n = h.getNext();
        if (n == null){
            break;
        }else{
            console.log(" yield: "+n);
        }
    }


    h.reset();
    while(true){
        var n = h.getNext();
        if (n == null){
            break;
        }else{
            console.log(" yield: "+n);
        }
    }



</script>

于 2013-02-19T14:47:33.833 に答える
0

私は間違っていますか、それとも次のとおりですか?

function formula(n){ return n+1; }
var sequence = [1,3,5,0,0,0,0,0,0,0];
var i=0;
function findNextNumber() {
    for (; i<10; i++) {
        var x = formula(i);
        if (sequence[i] != x) {
            sequence.splice(i, 0, x); // insert x here
            sequence.length = 10; // chop of rest
            return x;
        }
    }
    // else
    return null/undefined/whatever;
}

> findNextNumber()
2
> findNextNumber()
4
> findNextNumber()
6
> findNextNumber()
7
> findNextNumber()
8
> findNextNumber()
9
> findNextNumber()
10
> findNextNumber()
whatever
于 2013-02-19T14:40:25.000 に答える