我开始制作一个能够执行以下操作的功能:计算您可以用数字0,1,2,3,4和5制作多少6位数字,可以除以6?
我目前是如何尝试启动的,是我创建了一个包含所有可能数字的数组,然后取出其中包含任何numbers
'数组元素的每个数字,然后删除那些不可分割的数字与6.
我被困在第二部分。我尝试在numbers
数组中循环2循环,然后在该循环内,为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;
}
}
答案 0 :(得分: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>');
您需要根据配置更改最小和最大数字。我已经使允许的数字和数字的长度可配置。