3

私は次のことができる関数を作り始めました:6で割ることができる数字0、1、2、3、4、および5で作成できる6桁の数字の数を数えますか?

私が現在始めようとしている方法は、可能なすべての数値の配列を作成し、numbers配列要素のいずれかを含むすべての数値を取り出し、6で割り切れないものを削除することです。

私は2番目の部分で立ち往生しました。の配列でループする2つのループをnumbers作成し、そのループ内で、配列の長さに対してもう1つのループを作成して、allnumbersすべての一致を削除してみました。

次に%、同じ方法で演算子を使用して、0を返さないすべての要素を取得します。

コードは柔軟である必要があります。ユーザーが要求した場合。6桁目でも、コードは機能するはずです。どうすればこれを終えることができますか?

私のコードは次のとおりです。

var allnumbers = [],j;
var biggestnumber = "999999999999999999999999999999999999999999999999999999999999";

function howmanynumbers(digits,numbers,divideWith){
    if (digits && numbers && divideWith){
        for (var i = 0; i < 1+Number(biggestnumber.substring(0,digits)); i++ ){
            allnumbers.push(i);
        }

        for (j = 0; j < numbers.length; j++ ){
            var matchit = new RegExp(numbers[j]);
        }
            //not expected to work, I just had this in for reference
        if ( String(allnumbers[i]).match(matchit) != [""]){
            j = 0;
            allnumbers.splice(i,1);
            var matchit = new RegExp(numbers[j])
        }
    }
    else {
        return false;
    }
}
4

1 に答える 1

2

これは、ソリューション全体に対する私の見解です。

var i;
var allowedDigitsPattern = /^[0-5]+$/i;
var numbers = [];

for (i = 100000; i < 555555; i++) {
    if (allowedDigitsPattern.test(i.toString())
        && i % 6 === 0) {
        numbers.push(i);       
    }
}

そして、次のように結果を確認できます。

document.write('There are ' + numbers.length + ' numbers<br>');

// write out the first ten!
for (i = 0; i < 10; i++) {
    document.write(numbers[i] + '<br>');
}

コメントに基づいて更新...

これの構成可能なバージョンは次のようになります。

var i;
var lowestDigit = 0;
var highestDigit = 5;
var numberOfDigits = 6;

var allowedDigitsPattern = new RegExp('^[' + lowestDigit + '-' + highestDigit + ']+$', 'gi');

var smallestNumber = '1';
for (i = 1; i < numberOfDigits; i++) {
    smallestNumber += '0';
}

var biggestNumber = '';
for (i = 0; i < numberOfDigits; i++) {
    biggestNumber += highestDigit.toString();
}

var numbers = [];

for (i = smallestNumber; i < biggestNumber; i++) {
    if (allowedDigitsPattern.test(i.toString())
        && i % 6 === 0) {
        numbers.push(i);        
    }
}

document.write('There are ' + numbers.length + ' numbers<br>');

構成に基づいて最小数と最大数を変更する必要があります。許容桁数と数字の長さの両方を構成可能にしました。

于 2012-12-20T16:53:53.837 に答える