Skip to content

Instantly share code, notes, and snippets.

@jikeytang
Last active June 29, 2016 05:15
Show Gist options
  • Save jikeytang/52ca1ec5c171dd121fd2 to your computer and use it in GitHub Desktop.
Save jikeytang/52ca1ec5c171dd121fd2 to your computer and use it in GitHub Desktop.
[ Javascript ] - 20140519-题目1
// 此两个题目由杭州-轨道友情提供
有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
回答时注意加上下面这句话,才会有语法高亮或格式缩进。
```javascript
@jikeytang
Copy link
Author

// 轨道答案

var i,j,k;
for(var i=1;i<=4,i++){
    for(var j=1;j<=4;j++){
        for(var k=1,k<=4;k++){
            if(i!=j&&j!=k&&i!=k){
                document.write(i*100+j*10+k);
            }
        }
    }
}

@jikeytang
Copy link
Author

在扩展了一下,有数字,大小写字母,位数不限。方法不是很精妙,先就这样吧:

function getNum(len){
    var str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    var arr = [];
    for(var i = 0; i < len; i++){
        arr.push(str.charAt(Math.floor(Math.random()*10+1)));
    }
    return arr.join('');
}
console.log(getNum(4));

@wzc602003869
Copy link

这个这样小改动一下是不是能减少循环的次数了?

for(var i=1;i<=4;i++){
    for(var j=1;j<=4;j++){
        if(i!=j){
            for(var k=1;k<=4;k++){
                if(j!=k&&i!=k){
                    document.writeln(i*100+j*10+k);
                }
            }
        }
    }
}

@tanxingxing
Copy link

 很做作的一堆码---------------
fuckNum();
function fuckNum() {
    var a1 = [1, 2, 3, 4].toString();
    var a2,a3;
    for(var i= 1;i<=4;i++){
        var str1=a1.replace(i,'').replace(/^,|,$|,(?=,)/g,'');
        a2=str1.split(',');
        for(var j= 0;j<a2.length;j++){
            var str2=str1.replace(a2[j],'').replace(/^,|,$|,(?=,)/g,'');
            a3=str2.split(',');
            for(var k= 0;k<a3.length;k++){
                document.writeln(parseInt(i+''+a2[j]+''+a3[k]));
            }
        }


    }

}

@skyhacker2
Copy link

var arr = [1,2,3,4];
var a = 0;
function count(times, num, seq, isUsed) {
    if (num >= times) {
        a++;
        var str = seq.join('');
        console.log(str);
        return;
    }
    for (var i = 0; i < arr.length; i++) {
        if (!isUsed[arr[i]]) {
            isUsed[arr[i]] = true;
            seq.push(arr[i]);
            count(times, num+1, seq, isUsed);
            seq.splice(seq.length-1, 1);
            isUsed[arr[i]] = false;
        } 
    }
}
count(3, 0, [], {});
console.log(a);

@yanhaijing
Copy link

var i, j, k;
var len = 4;
var count = 0;
var result = [];
for (i = 0; i < len; i++) {
    for (j = 0; j < len; j++) {
        for (k = 0; k < len; k++) {
            if (i !== j && j !== k && k !== i) {
                result.push((i + 1) * 100 + (j + 1) * 10 + (k + 1));
                count += 1;
            }
        }
    }
}

console.log(count);
console.log(result);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment