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> ";
    }
  }

 ...