開発環境
- OS X El Capitan - Apple (OS)
- Emacs (Text Editor)
- JavaScript (プログラミング言語)
- Safari(Web browser)
- JavaScript 第6版 (David Flanagan(著)、村上 列(翻訳)、オライリージャパン)(参考書籍)
- JavaScriptリファレンス 第6版(David Flanagan(著)、木下 哲也(翻訳)、オライリージャパン)(参考書籍)
Pythonからはじめる数学入門 (Amit Saha (著)、黒川 利明 (翻訳)、オライリージャパン)の5章(集合と確率を操作する)、3.9(プログラミングチャレンジ)、問題5-4(トランプをよく切る)をJavaScript(とstatistics.js)で取り組んでみる。
問題5-4(トランプをよく切る)
コード(Emacs)
HTML5
<div id="output0"></div>
<button id="shuffle0">shuffle</button>
<script src="sample4.js"></script>
JavaScript
(function () {
'use strict';
var card,
suits = ['clubs', 'spades', 'hurts', 'diamonds'],
ranks,
div_output = document.querySelector('#output0'),
button_shuffle = document.querySelector('#shuffle0'),
nl = '<br>',
range,
display;
Array.prototype.shuffle = function () {
var shuffled = [],
len = this.length,
len0,
i;
for (len0 = len; len0 > 0; len0 -= 1) {
i = Math.floor(Math.random() * len0);
shuffled.push(this[i]);
this.splice(i, 1);
}
for (i = 0; i < len; i += 1) {
this[i] = shuffled[i];
}
};
card = function (suit, rank) {
var that = {};
that.toString = function () {
return rank + ' of ' + suit;
};
return that;
};
range = function (start, end, step) {
var nums = [],
i;
for (i = start; i < end; i += step) {
nums.push(i);
}
return nums;
};
ranks = ['ace'].concat(range(2, 11, 1)).concat(['jack', 'queen', 'king']);
display = function () {
var cards = [],
i,
i_max,
j,
j_max,
output = '';
for (i = 0, i_max = suits.length; i < i_max; i += 1) {
for (j = 0, j_max = ranks.length; j < j_max; j += 1) {
cards.push(card(suits[i], ranks[j]));
}
}
cards.shuffle();
cards.forEach(function (card) {
output += card + nl;
});
div_output.innerHTML = output;
};
button_shuffle.onclick = display;
display();
}());
0 コメント:
コメントを投稿