2012-05-01 4 views
1

루프가있어서 패턴 번호에 특정 숫자를 반환해야합니다. 내 count은 물론 44-1(3)도 사용할 수 있습니다. 나는 5,12,19,26,33 등을 참으로, 나머지는 거짓으로 돌려 줄 필요가있다.루프 반환 bool

function saturn(count,perline){ 
    var line_one = perline; // 5 
    var line_two = perline-1; // 4 
    var line_both = line_one + line_two; // 7 
    var x = (perline+1)+(line_both*(Math.floor(count/(perline+1))-1)); 
    if(x<0) x = 0; 
    var capture; 
    if(perline == 1){ //if perline = 1 don't indent any 
    capture = false; 
    }else if(x == count){ 
    capture = true; 
    } 
    console.log("("+perline+"+1)+("+line_both+"*(Math.floor("+count+"/("+perline+"+1))-1)) ="+x); 
    console.log(count+" "+capture); 
    return capture; 
} 

콘솔 출력.

script.js:54(4+1)+(7*(Math.floor(1/(4+1))-1)) =0 
script.js:561 undefined 
script.js:54(4+1)+(7*(Math.floor(2/(4+1))-1)) =0 
script.js:562 undefined 
script.js:54(4+1)+(7*(Math.floor(3/(4+1))-1)) =0 
script.js:563 undefined 
script.js:54(4+1)+(7*(Math.floor(4/(4+1))-1)) =0 
script.js:564 undefined 
script.js:54(4+1)+(7*(Math.floor(5/(4+1))-1)) =5 
script.js:565 true 
script.js:54(4+1)+(7*(Math.floor(6/(4+1))-1)) =5 
script.js:566 undefined 
script.js:54(4+1)+(7*(Math.floor(7/(4+1))-1)) =5 
script.js:567 undefined 
script.js:54(4+1)+(7*(Math.floor(8/(4+1))-1)) =5 
script.js:568 undefined 
script.js:54(4+1)+(7*(Math.floor(9/(4+1))-1)) =5 
script.js:569 undefined 
script.js:54(4+1)+(7*(Math.floor(10/(4+1))-1)) =12 
script.js:5610 undefined 
script.js:54(4+1)+(7*(Math.floor(11/(4+1))-1)) =12 
script.js:5611 undefined 
script.js:54(4+1)+(7*(Math.floor(12/(4+1))-1)) =12 
script.js:5612 true 
script.js:54(4+1)+(7*(Math.floor(13/(4+1))-1)) =12 
script.js:5613 undefined 
script.js:54(4+1)+(7*(Math.floor(14/(4+1))-1)) =12 
script.js:5614 undefined 
script.js:54(4+1)+(7*(Math.floor(15/(4+1))-1)) =19 
script.js:5615 undefined 
script.js:54(4+1)+(7*(Math.floor(16/(4+1))-1)) =19 
script.js:5616 undefined 
script.js:54(4+1)+(7*(Math.floor(17/(4+1))-1)) =19 
script.js:5617 undefined 
script.js:54(4+1)+(7*(Math.floor(18/(4+1))-1)) =19 
script.js:5618 undefined 
script.js:54(4+1)+(7*(Math.floor(19/(4+1))-1)) =19 
script.js:5619 true 
script.js:54(4+1)+(7*(Math.floor(20/(4+1))-1)) =26 
script.js:5620 undefined 
script.js:54(4+1)+(7*(Math.floor(21/(4+1))-1)) =26 
script.js:5621 undefined 
script.js:54(4+1)+(7*(Math.floor(22/(4+1))-1)) =26 
script.js:5622 undefined 
script.js:54(4+1)+(7*(Math.floor(23/(4+1))-1)) =26 
script.js:5623 undefined 
script.js:54(4+1)+(7*(Math.floor(24/(4+1))-1)) =26 
script.js:5624 undefined 
script.js:54(4+1)+(7*(Math.floor(25/(4+1))-1)) =33 
script.js:5625 undefined 
script.js:54(4+1)+(7*(Math.floor(26/(4+1))-1)) =33 
script.js:5626 undefined 
script.js:54(4+1)+(7*(Math.floor(27/(4+1))-1)) =33 
script.js:5627 undefined 
script.js:54(4+1)+(7*(Math.floor(28/(4+1))-1)) =33 
script.js:5628 undefined 
+0

그리고 당신은 무엇을 시도? 구체적으로 작동하지 않는 것은 무엇입니까? – maerics

+0

algo'(4 + 1) + (((4-1) +4) * (Math.floor (count/(4 + 1)) - 1))'나는 너트 = 숫자의 첫 번째 커플하지만 나중에 오프셋됩니다. – ThomasReggi

+0

작성하려는 알고리즘의 세부 사항으로 문제를 업데이트하고 문제를 해결할 수없는 이유를 고려하십시오. 예상되는 참/거짓 입력의 예는 유용 할 것입니다. – maerics

답변

2

이것은 무엇을하려는 것입니까?

return (x - 5) % 7 == 0 

그것은 5, 12, 19, 26, 33

편집에 대한 true를 반환 : 당신이 편집 한, 나는 여전히, 그러나 이것은 도움이되지 않습니다 것을 이해할 수 없다, 미안

0

% 연산자를 사용해야합니다. 이 작은 바이올린 데모는 100 개의 숫자를 거쳐서 당신이 한 것을 돌려 준 것처럼 보입니다. 기본적으로 7 번의 반복 인터레이션 % 7은 1과 같으므로 이후 숫자를 얻으려면 4를 더해야합니다.

http://jsfiddle.net/NQr5j/

var iteration = 100, 
    store = []; 

do { 
    if (iteration % 7 == 1) store.push(iteration + 4); 
} while (iteration--); 

console.log(store);