I started learning JavaScript 4 days ago and I am trying to convert my python project to JavaScript for practice.
Here is my working python code:
def shuffle(l):
for shuffles in range(numPerformed):
heads = 0
#tails = 0
toss = []
for card in range(numCards):
x = np.random.randint(2)
toss.append(x)
if x == 0:
heads += 1
#else:
#tails += 1
left = l[:heads] #left hand
right = l[heads:] #right hand
shuffled = [] #shuffled deck
for card in range(numCards):
if toss[card] == 0:
shuffled.append(left.pop(0))
if toss[card] == 1:
shuffled.append(right.pop(0))
l = shuffled
return l
numCards = int(input("Enter number of cards in deck: "))
l = list(range(numCards))
numPerformed = int(input("Enter number of shuffles to perform on deck: "))
print(shuffle(l))
I am using the coin-toss method to do riffle shuffle. Here is my JS code, but something is causing it to give the wrong answer:
const list = (numCards) => {
var newList = []
var i = 0;
while (i < numCards){
newList.push(i);
i++;
}
return newList
}
function shuffle(l, numPerformed){
for (var shuffles = 0; shuffles < numPerformed; shuffles++){
var heads = 0;
var tails = 0;
var toss = [];
for (var card = 0; card < l.length; card++){
var x = Math.floor(Math.random() * 2);
toss.push(x);
if (x == 0){
heads++;
}else{
tails++;
}
}
var left = []; //l[:heads]
var right = []; //l[heads:]
for (var i = 0; i < l.length; i++){
i < heads ? left.push(i) : right.push(i);
}
var shuffled = [];
for (var card = 0; card < numCards; card++){
if (toss[card] == 0){
shuffled.push(left.shift());
}else if (toss[card] == 1){
shuffled.push(right.shift());
}
}
l = shuffled;
}
return l
}
var numCards = parseInt(prompt("Enter number of cards in deck: "))
var l = list(numCards)
var numPerformed = parseInt(prompt("Enter number of shuffles to perform on deck: "));
console.log(shuffle(l))
What am I doing wrong? I think this error is caused due to my inexperience with JavaScript syntax.
Aucun commentaire:
Enregistrer un commentaire