Skip to content

Instantly share code, notes, and snippets.

@jdetle
Created October 20, 2015 23:22
Show Gist options
  • Save jdetle/f00851961761d27cf35b to your computer and use it in GitHub Desktop.
Save jdetle/f00851961761d27cf35b to your computer and use it in GitHub Desktop.
var deepCopy = require("deepcopy");
//takes in deck object, returns shuffled deck object, given random number generator
function size (object) {
var size = 0;
var keys = Object.keys(object);
for (var i = 0; i<keys.length; i++){
if(object.hasOwnProperty(keys[i])){
size++;
}
}
return size;
}
var deck = function (deck) {
var originalDeck = deepCopy(deck);
var destroyedDeck = deepCopy(deck);
//console.log(destroyedDeck);
//console.log(originalDeck);
//console.log(size(originalDeck));
//console.log(size(destroyedDeck));
var shuffled = {};
var i = 0;
shuffleDeck = function (){
if(size(shuffled) == size(originalDeck)){
//console.log(shuffled);
var newShuffle = deepCopy(shuffled);
//console.log(newShuffle);
return newShuffle;
}
else{
var keys = Object.keys(destroyedDeck);
var random = Math.floor(Math.random()*keys.length);
//console.log(i);
//console.log(typeof(destroyedDeck));
//console.log(keys);
//console.log(random);
//console.log(keys[random])
shuffled[i+1] = destroyedDeck[keys[random]];
//console.log(shuffled);
i++;
delete destroyedDeck[keys[random]];
return shuffleDeck(destroyedDeck);
}
}
this.shuffle = function (){
return shuffleDeck();
}
};
var deckObj = {1 : "a",
2: "b",
3: "c",
4: "d",
5: "f",
6: "g"
};
//console.log(Object.getOwnPropertyNames(deckObj))
var deck = new deck(deckObj);
var newdeck = deck.shuffle();
console.log(newdeck);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment