Sergeant Major 3-5-8
Determine the chance for Player1 to be dealt with not a single J,Q,K,A card in hand.
by Noncho Savov
HTML
<table style="margin-top:5px">
<tr>
<td><u>Player1</u></td>
<td><div id="player1"></div></td>
</tr>
<tr>
<td>Player2</td>
<td><div id="player2"></div></td>
</tr>
<tr>
<td>Player3</td>
<td><div id="player3"></div></td>
</tr>
<tr>
<td>Buffer</td>
<td><div id="buffer"></div></td>
</tr>
</table>
<p id="txt"></p>
<p id="chance"></p>
<p>
<button onclick="pause()">Pause</button><input type="checkbox" id="mustpause" value="Pause">
<button onclick="next()" style="display:none" id="next">Next</button>
</p>
CSS
table, th, td {
border: 1px solid black;
padding:5px;
}
input { padding:0; margin:0; margin-left:5px }
p { padding:0; margin:0; margin-top:5px }
JavaScript
baseCards = [];
var p1 = document.getElementById("player1");
var p2 = document.getElementById("player2");
var p3 = document.getElementById("player3");
var buffer = document.getElementById("buffer");
var paused;
var positive = 0;
var negative = 0;
for(var i = 2; i < 15; i++) {
for(var j = 0; j < 4; j++){
baseCards.push(["♣","♦","♠","♥"][j]+(i<10?i:["T","J","Q","K","A"][i-10]));
}
}
function getType(card){
var str = ["♦","♣","♥","♠"].indexOf(card.charAt(0));
return str;
}
function getStrength(card){
var str = ["2","3","4","5","6","7","8","9","T","J","Q","K","A"].indexOf(card.charAt(1));
return str;
}
function sortCards(a, b){
if(getType(a) > getType(b)) return 1;
else if(getType(a) < getType(b)) return -1;
else if(getStrength(a) > getStrength(b)) return 1;
return -1;
}
requestAnimationFrame(calculate);
function pause(){
paused = !paused;
document.getElementById("next").style.display = (paused ? "inline" : "none");
document.getElementById("mustpause").style.display = (paused ? "none" : "inline");
}
function calculate(){
if(!paused) next();
requestAnimationFrame(calculate);
}
function next(){
var cards = [...baseCards];
var arr = shuffle(cards);
//console.log(arr);
var player1 = [];
var player2 = [];
var player3 = [];
var temp = [];
var players = [player1, player2, player3];
var j = 0;
for(var i = 0; i < 52; i++) {
if(Math.random()<.1 && temp.length<4) temp.push(cards.pop());
else {
j++; if(j > 2) j = 0;
players[j].push(cards.pop());
if(player1.length == 16 && player2.length == 16 && player3.length == 16) break;
}
}
temp = temp.concat(cards);
player1.sort(sortCards);
player2.sort(sortCards);
player3.sort(sortCards);
for(i = 0; i < 3; i++) {
eval("p"+(i+1)).innerHTML = "";
for(const element of players[i]) {
eval("p"+(i+1)).innerHTML += "<span"+(element.indexOf("♦")>-1 || element.indexOf("♥")>-1 ?" style='color:red'>":">") + element + "</span> ";
}
}
...