Skip to content

Instantly share code, notes, and snippets.

@brandonbarringer
Last active August 6, 2019 19:44
Show Gist options
  • Save brandonbarringer/b9bd80166e594eb7a65aff28a9ce7efb to your computer and use it in GitHub Desktop.
Save brandonbarringer/b9bd80166e594eb7a65aff28a9ce7efb to your computer and use it in GitHub Desktop.
Nitish's deck problem
var Deck = (function() {
var cards = [];
var settings = {
deckSize: 52,
cardSets: 4,
uniqueSets: function() { return this.deckSize / this.cardSets }
};
return {
create: function() {
cards = []; // destroy current deck
for ( var i = 1; i <= settings.uniqueSets(); i++ ) {
for( var j = 1; j <= settings.cardSets; j++ ) {
var card = '';
switch(i) {
case 1:
card = 'A';
break;
case 11:
card = 'J';
break;
case 12:
card = 'Q';
break;
case 13:
card = 'K';
break;
default:
card = i;
}
cards.push(card);
}
}
},
shuffle: function() {
var currentIndex = cards.length, temporaryValue, randomIndex;
while (0 !== currentIndex) {
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
temporaryValue = cards[currentIndex];
cards[currentIndex] = cards[randomIndex];
cards[randomIndex] = temporaryValue;
}
},
cut: function() {
var firstHalf = cards.slice(0, cards.length/2);
var secondHalf = cards.slice(cards.length/2, cards.length);
cards = secondHalf.concat(firstHalf);
},
deal: function() {
return cards.shift();
},
dealRandom: function() {
var randomNumber = Math.floor(Math.random() * cards.length);
return cards.splice(randomNumber, 1)[0];
}
};
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment