開発環境
- macOS Sierra - Apple (OS)
- Emacs (Text Editor)
- JavaScript (プログラミング言語)
- Node.js, Safari(JavaScript エンジン)
- Learning JavaScript [邦訳](参考書籍)
The Art of Computer Programming Volume 1 Fundamental Algorithms Third Edition 日本語版(Donald E. Knuth (著)、青木 孝 (著)、筧 一彦 (著)、鈴木 健一 (著)、長尾 高弘 (著)、有澤 誠 (その他)、和田 英一 (その他)、ドワンゴ)の第1章(基礎概念)、1.1(アルゴリズム)、演習問題3、4を取り組んでみる。
コード(Emacs)
HTML5
m = <input id="m0" type="number" min="1" step="1" value="2166"> n = <input id="n0" type="number" min="1" step="1" value="6099"> times = <input id="times0" type="number" min="1" step="1" value="1000000"> <br> <button id="run0">run</button> <button id="clear0">clear</button> <pre id="output0"></pre> <script src="sample3.js"></script>
JavaScript
let input0 = document.querySelector('#m0'),
input1 = document.querySelector('#n0'),
input2 = document.querySelector('#times0'),
btn0 = document.querySelector('#run0'),
btn1 = document.querySelector('#clear0'),
pre0 = document.querySelector('#output0'),
time = (fn) => {
return (n, ...args) => {
let start = new Date();
let result;
for (let i = 0; i < n; i += 1) {
result = fn(...args);
}
let end = new Date();
pre0.textContent += `${result}\n${end.getTime() - start.getTime()} msec\n`;
};
};
let e = (m, n) => {
let iter = (m, n) => {
// e1.
let r = m % n;
// e2.
if (r === 0) {
return n;
}
// e3.
m = n;
n = r;
return iter(m, n);
};
// e0.
if (m < n) {
return iter(n, m);
}
return iter(m, n);
};
let f = (m, n) => {
// f1.
m = m % n;
// f2.
if (m === 0) {
return n;
}
// f3.
n = n % m;
// f4.
if (n === 0) {
return m;
}
return f(m, n);
};
let output = () => {
let m = parseInt(input0.value, 10),
n = parseInt(input1.value, 10),
t = parseInt(input2.value, 10);
let e0 = time(e),
f0 = time(f);
pre0.textContent += 'e\n';
e0(t, m, n);
pre0.textContent += 'f\n';
f0(t, m, n);
};
btn0.onclick = output;
btn1.onclick = () => {
pre0.textContent = '';
};
output();
m =
n =
times =
0 コメント:
コメントを投稿