我有一個家庭作業的任務,在那裏我創建一個紙牌包,作爲獎金,我隨機化他們。我們應該對它們進行隨機化處理,以便連續三張牌沒有相同的花色。我使用Fisher-Yates方法對他們進行了隨機化。JavaScript洗牌平臺,所以沒有三個相同的套裝
它大部分時間都在使用,但仍有可能三張卡片連續有相同的花色。
我該如何運行一個循環並掃描連續的三張卡片,看看它們是否是同一套服裝,這樣如果這是真的,我可以再次運行我的隨機化功能?
這裏是我的代碼:
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循環每個花色類型做一個(運行此搜索環路4次),然後使用indexOf(適合[i]),但那麼我怎樣才能將它與甲板[i + 1]和[i + 2]進行比較?我如何創建我正在尋找的套裝和套牌中的套裝的比較?
此外,卡元素命名的數組:「鑽石王牌」,「黑桃5」
所以我正在處理一個要求他們作爲字符串的要求。如何在每個''之後提取子字符串? –
@ as.beaulieu,我想「如何提取子字符串」在上面得到了回答。 (使用正則表達式。)如果遇到問題,您應該試試並更具體地詢問您的難點,可能是單獨的更加重點的問題。 –
爲什麼不處理數據,就好像對象,而不是字符串,然後由於字符串的要求,最後只是將它們作爲字符串返回? – David