Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Array.prototype.shuffle = function() {
- var c = this.length, temp, i;
- while (c > 0) {
- i = Math.floor(Math.random() * c);
- c--;
- temp = this[c];
- this[c] = this[i];
- this[i] = temp;
- }
- return this;
- };
- var cards = (function(n) {
- var list = [];
- for (var i = 0; i < n; i++) {
- list.push([
- ~~(i / 27) % 3,
- ~~(i / 9) % 3,
- ~~(i / 3) % 3,
- ~~(i / 1) % 3
- ]);
- }
- return list;
- }(81));
- function isSet(a, b, c) {
- var result = true;
- for (var i = 0; i < 4; i++) {
- if (!(a[i] === b[i] && b[i] === c[i]) &&
- !(a[i] !== b[i] && a[i] !== c[i] && b[i] !== c[i])) {
- result = false;
- break;
- }
- }
- return result;
- }
- function hasSet(cards) {
- var len = cards.length, result = false;
- for (var i = 0; !result && i < len - 2; i++) {
- for (var j = i + 1; !result && j < len - 1; j++) {
- for (var k = j + 1; !result && k < len - 0; k++) {
- result = isSet(cards[i], cards[j], cards[k]);
- }
- }
- }
- return result;
- }
- function monteCarlo(count, n) {
- var contains = 0;
- for (var i = 0; i < n; i++) {
- contains += hasSet(cards.shuffle().slice(0, count)) ? 1 : 0;
- }
- return contains / n;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement