【发布时间】:2017-06-02 17:37:54
【问题描述】:
我有一个家庭作业,我在其中创建一副扑克牌,作为奖励,我将它们随机化。我们应该将它们随机化,这样连续的三张牌就不会有相同的花色。我使用 Fisher-Yates 方法对它们进行了随机化。
它在大多数情况下都有效,但仍然有可能三张牌可以连续拥有相同的花色。
如何运行循环并连续扫描三张牌以查看它们是否相同,如果是,我可以再次运行随机函数?
这是我的代码:
var suits = ["Hearts", "Diamonds", "Spades", "Clovers"];
var faces = ["Ace", 2, 3, 4, 5, 6, 7, 8, 9, 10, "Jack", "Queen", "Kings", "Joker"]
var a = " of "
var deck = [];
var temp = null;
//Looping through arrays, combining faces to each suit
//Faces is length-1 to not insert all jokers
for (i = 0; i < suits.length; i++) {
for (j = 0; j < faces.length-1; j++) {
//Looping through each of the suits
deck.push(faces[j] + a + suits[i])
}
}
//Inserting 1 joker to the deck
deck.push(faces[13])
console.log(deck)
//Shuffle the deck, using Fisher-Yates shuffle
//Researched from Frank Mitchell: https://www.frankmitchell.org/2015/01/fisher-yates/
for (k = deck.length - 1; k > 0; k -= 1) {
m = Math.floor(Math.random() * (k + 1))
temp = deck[k]
deck[k] = deck[m]
deck[m] = temp
}
console.log("^^^^^^^^^^^^^^^^^^^^^")
console.log("---Shuffling Deck----")
console.log("vvvvvvvvvvvvvvvvvvvvv")
console.log(deck)
注意:我能猜到的最好的,我知道这需要更多的过程是为每种西装类型做一个 for 循环(运行这个搜索循环四次),然后使用 indexOf(suits[i]),但是我如何将它与deck[i + 1] 和[i + 2] 进行比较?如何比较我正在寻找的套装和套牌中的套装?
此外,卡片元素在数组中命名:“Ace of Diamonds”、“5 of Spades”
【问题讨论】:
标签: javascript arrays string search