2017年4月19日水曜日

開発環境

追記: 他の言語での計算結果を追加。

JavaScript だと計算結果が実際にどうなるか確認したり、任意の数値で確認してみたりできるようにしてみた。

確かに、真(true)のみではなく、偽(false)が登場。

コード(Emacs)

HTML5

p = <input id="p0" type="number" step="0.1" value="2.3">
q = <input id="q0" type="number" step="0.1" value="4.5">
<br>
<button id="run0">run</button>
<button id="clear0">clear</button>
<pre id="output0"></pre>

<script src="sample.js"></script>

JavaScript

let input0 = document.querySelector('#p0'),
    input1 = document.querySelector('#q0'),
    inputs = [input0, input1],
    btn0 = document.querySelector('#run0'),
    btn1 = document.querySelector('#clear0'),
    pre0 = document.querySelector('#output0'),
    p = (x) => pre0.textContent += x + '\n';

let f = (p, q) => (1 - p) + p * (1 - q),
    g = (p, q) => 1 - p * q,
    range = (n) => {
        let result = [];
        for (let i = 0; i < n; i += 1) {
            result.push(i);
        }
        return result;
    };

let output = () => {
    pre0.textContent = '';
    
    let p0 = parseFloat(input0.value),
        q0 = parseFloat(input1.value);

    p('===, p, q, (1 - p) + p * (1 - q), 1 - p * q');
    let a1 = f(p0, q0),
        a2 = g(p0, q0);
    p(`${a1 === a2}, ${p0}, ${q0}, ${a1}, ${a2}`);
    range(10)
        .map((x) => x / 10)
        .forEach((i) => {
            range(10)
                .map((x) => x / 10)
                .forEach((j) => {
                    let a1 = f(i, j),
                        a2 = g(i, j);
                    p(`${a1 === a2}, ${i}, ${j}, ${a1}, ${a2}`);
                });
    });
    
};

btn0.onclick = output;
btn1.onclick = () => pre0.textContent = '';
inputs.forEach((input) => input.onchange = output);

output();
p = q =











						

0 コメント:

コメントを投稿