JavaScript初学者编程题(18)

本文详细解析了一道编程题,新手如何利用JavaScript根据队友限制条件找出甲乙两队的乒乓球比赛名单,通过简化后的代码和逻辑分析,展示了编程解决问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaScript初学者编程题(18)

题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

JavaScript部分
//使用i、j、k代表甲队,分别匹配乙队
var team2=['x','y','z'];
for(var i = 0; i < 3; i++){
    for(var j = 0; j < 3; j++){
        for(var k = 0; k < 3; k++){
            //按照题目要求写判断
            if(j != k && i != k && i != j && k != 0 && k != 2 && i != 0){
                console.log('a' + team2[i] + '\n' + 'b' + team2[j] + '\n' + 'c' + team2[k] + '\n');
            }
        }
    }
}
下面这个是我最开始写的一个“失败品”,虽然结果正确,但是过程太复杂,大家看看就好
var team1 = ['a','b','c'];
var team2 = ['x','y','z'];
var all = [];

while (all.length < 3){
    for(var i = 0; i < team1.length; i++){
        var oneArr = [];
        for(var j = 0; j < team2.length; j++){
            if(team1[i] == 'a' && team2[j] == 'x'){
                continue;
            }else if((team1[i] == 'c' && team2[j] == 'x') || (team1[i] == 'c' && team2[j] == 'z')){
                continue;
            }else{
                var str = team1[i] + team2[j];
                oneArr.push(str);
            }
        }
        all.push(oneArr);
    }
    for(var x = 0; x < all.length; x++){
        //判断是否为object,也就是数组
        if(typeof(all[x]) == 'object'){
            //如果是数组,并且长度为1,则证明这个是唯一的,把他提取出来
            if(all[x].length == 1){
                all[x] = all[x][0];
                for(var t1 = 0; t1 < team1.length; t1++){
                    if(team1[t1] == all[x][0]){
                        //从team1中,把这个元素删除掉
                        team1.splice(t1,1);
                    }
                }
                for(var t2 = 0; t2 < team2.length; t2++){
                    if(team2[t2] == all[x][1]){
                        //从team2中,把这个元素删除掉
                        team2.splice(t2, 1);
                    }
                }
            }
        }
    }
    for(i in all){
        if(typeof(all[i]) == 'object'){
            all.splice(i,1);
        }
    }
}
console.log(all);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值