结论
我的输出结果和书上不一致,在网上查了下,有的人士和我的结果一样,我把每一步都打印出来并看了结果,我的过程和结果是没问题的。
游戏规则
将一副扑克牌平均分成两份,每人拿一份。小哼先拿出手中的第一张扑克牌放在桌上,然后小哈也拿出手中的第一张扑克牌,并放在小哼刚打出的扑克牌的上面,就像这样两人交替出牌。出牌时,如果某人打出的牌与桌上某张牌的牌面相同,即可将两张相同的牌及其中间所夹的牌全部取走,并依次放到自己手中牌的末尾。当任意一人 手中的牌全部出完时,游戏结束,对手获胜。
谁先没牌谁输;
依次放到自己的手中;即从最后的牌开始拿,比如 1、3、5、1,则拿回去的顺序是倒的,即:1、5、3、1 放到自己的牌的最后。
coding
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| let man = [2, 4, 1, 2, 5, 6]; let woman = [3, 1, 3, 5, 6, 4]; let dest = []; console.log(man); console.log(woman); while (man.length > 0 && woman.length > 0) { let m = man.shift(); let w = woman.shift(); let isMan = false; let isWoman = false; console.log("dest", dest); console.log("man", m); console.log("manArr", man); console.log("woman", w); console.log("womanArr", woman); console.log("*******************************8"); for (let i = 0; i < dest.length; i++) { if (m === dest[i]) { isMan = true; break; } } if (isMan) { man.push(m); while (dest.length > 0) { let cur = dest.pop(); man.push(cur); if (cur === m) { break; } } } else { dest.push(m); } for (let i = 0; i < dest.length; i++) { if (w === dest[i]) { isWoman = true; break; } } if (isWoman) { woman.push(w); while (dest.length > 0) { let cur = dest.pop(); woman.push(cur); if (cur === w) { break; } } } else { dest.push(w); } } console.log("dest", dest); console.log("man", man); console.log("woman", woman); console.log("%s赢了", woman.length === 0 ? "男" : "女");
|
结果
1 2 3 4
| dest [ 3, 4, 5, 6, 2, 1 ] man [] woman [ 6, 5, 2, 3, 4, 1 ] 女赢了
|
注意
刚开始里面用 for 循环来做,但是 for 循环会有很多坑。另外切记不要把循环中的判断放到一个循环中。
都是细节问题,这个需要自己手动写去看,其实并不难。