lolilol6

Benchmark created on


Test runner

Ready to run.

Testing in
TestOps/sec
a
var mySpiral =function(a,b,c,d){
var solution = [];
var lengthOfSegment = 0; 
var sens = 1;
var add=-1;
        var spiralGrid=function( Width,Height,Row,Col,currentPositionOnSegment){  
                debugger
                var index = Height*(Row-1)+Col; 
                if(0<index&&index<=Width*Height && Row >0 && Col >0) solution.push(index);

        if (solution.length==Width*Height) return;
        if(lengthOfSegment==currentPositionOnSegment && sens==-1){              
                sens=1; 
                currentPositionOnSegment=0;
                Col+=add;
                        add*=-1;
                        ++lengthOfSegment;
        } else if (lengthOfSegment!=currentPositionOnSegment && sens==-1){
                ++currentPositionOnSegment;
                Col+=add;
        }else if(lengthOfSegment==currentPositionOnSegment && sens==1){
                sens=-1;                        
                currentPositionOnSegment=0;
                Row+=add;
        }else if(lengthOfSegment!=currentPositionOnSegment && sens==1){
                ++currentPositionOnSegment;
                Row+=add;
        }     
    
        spiralGrid(Width,Height,Row,Col,currentPositionOnSegment);
    
        }
spiralGrid(a,b,c,d,0);
return solution;
}

var first = mySpiral(5,5,3,3);
 
ready
b
 var arraySpiralFromGridOfWidth = function(width, height,line,column)
 {
    var returnArray = [];
    var currentDirectionIndex = 0;
    var currentInt;
    var nextPivotal = 3;
    var numOfPivotal = 1;
    line++;
    
    for(var i=1;i<=width*height; i++){
        if(nextPivotal == i){
            numOfPivotal++;
            nextPivotal += Math.ceil(numOfPivotal/2);
            currentDirectionIndex++;
        }
        
        switch (currentDirectionIndex%4) {
            case 0:
                // Up
                line--;
                break;
                
            case 1:
                // Left
                column--;
                break;
                
            case 2:
                // Down
                line++;
                break;
                
            case 3:
                // Right
                column++;
                break;
        }
        
        currentInt = (line-1)*width+column;
        if(currentInt<=0||line>height||column>width||!column||!line){
            i--;
        } else {
            returnArray.push(currentInt);
        }
    }
    return returnArray;
}


arraySpiralFromGridOfWidth(5,5,3,3)
 
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.