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 =
===, p, q, (1 - p) + p * (1 - q), 1 - p * q
false, 2.3, 4.5, -9.349999999999998, -9.35
true, 0, 0, 1, 1
true, 0, 0.1, 1, 1
true, 0, 0.2, 1, 1
true, 0, 0.3, 1, 1
true, 0, 0.4, 1, 1
true, 0, 0.5, 1, 1
true, 0, 0.6, 1, 1
true, 0, 0.7, 1, 1
true, 0, 0.8, 1, 1
true, 0, 0.9, 1, 1
true, 0.1, 0, 1, 1
true, 0.1, 0.1, 0.99, 0.99
true, 0.1, 0.2, 0.98, 0.98
true, 0.1, 0.3, 0.97, 0.97
true, 0.1, 0.4, 0.96, 0.96
false, 0.1, 0.5, 0.9500000000000001, 0.95
false, 0.1, 0.6, 0.9400000000000001, 0.94
true, 0.1, 0.7, 0.93, 0.93
false, 0.1, 0.8, 0.92, 0.9199999999999999
true, 0.1, 0.9, 0.91, 0.91
true, 0.2, 0, 1, 1
false, 0.2, 0.1, 0.9800000000000001, 0.98
false, 0.2, 0.2, 0.9600000000000001, 0.96
false, 0.2, 0.3, 0.9400000000000001, 0.94
false, 0.2, 0.4, 0.92, 0.9199999999999999
true, 0.2, 0.5, 0.9, 0.9
false, 0.2, 0.6, 0.8800000000000001, 0.88
false, 0.2, 0.7, 0.8600000000000001, 0.86
false, 0.2, 0.8, 0.8400000000000001, 0.84
false, 0.2, 0.9, 0.8200000000000001, 0.82
true, 0.3, 0, 1, 1
true, 0.3, 0.1, 0.97, 0.97
true, 0.3, 0.2, 0.94, 0.94
false, 0.3, 0.3, 0.9099999999999999, 0.91
false, 0.3, 0.4, 0.8799999999999999, 0.88
true, 0.3, 0.5, 0.85, 0.85
false, 0.3, 0.6, 0.82, 0.8200000000000001
false, 0.3, 0.7, 0.7899999999999999, 0.79
false, 0.3, 0.8, 0.7599999999999999, 0.76
true, 0.3, 0.9, 0.73, 0.73
true, 0.4, 0, 1, 1
true, 0.4, 0.1, 0.96, 0.96
false, 0.4, 0.2, 0.92, 0.9199999999999999
false, 0.4, 0.3, 0.8799999999999999, 0.88
true, 0.4, 0.4, 0.84, 0.84
true, 0.4, 0.5, 0.8, 0.8
true, 0.4, 0.6, 0.76, 0.76
true, 0.4, 0.7, 0.72, 0.72
true, 0.4, 0.8, 0.6799999999999999, 0.6799999999999999
false, 0.4, 0.9, 0.64, 0.6399999999999999
true, 0.5, 0, 1, 1
true, 0.5, 0.1, 0.95, 0.95
true, 0.5, 0.2, 0.9, 0.9
true, 0.5, 0.3, 0.85, 0.85
true, 0.5, 0.4, 0.8, 0.8
true, 0.5, 0.5, 0.75, 0.75
true, 0.5, 0.6, 0.7, 0.7
true, 0.5, 0.7, 0.65, 0.65
true, 0.5, 0.8, 0.6, 0.6
true, 0.5, 0.9, 0.55, 0.55
true, 0.6, 0, 1, 1
false, 0.6, 0.1, 0.9400000000000001, 0.94
true, 0.6, 0.2, 0.88, 0.88
true, 0.6, 0.3, 0.8200000000000001, 0.8200000000000001
true, 0.6, 0.4, 0.76, 0.76
true, 0.6, 0.5, 0.7, 0.7
true, 0.6, 0.6, 0.64, 0.64
true, 0.6, 0.7, 0.5800000000000001, 0.5800000000000001
true, 0.6, 0.8, 0.52, 0.52
false, 0.6, 0.9, 0.46, 0.45999999999999996
true, 0.7, 0, 1, 1
true, 0.7, 0.1, 0.93, 0.93
true, 0.7, 0.2, 0.86, 0.86
true, 0.7, 0.3, 0.79, 0.79
true, 0.7, 0.4, 0.72, 0.72
true, 0.7, 0.5, 0.65, 0.65
true, 0.7, 0.6, 0.5800000000000001, 0.5800000000000001
true, 0.7, 0.7, 0.51, 0.51
false, 0.7, 0.8, 0.44, 0.44000000000000006
true, 0.7, 0.9, 0.37, 0.37
true, 0.8, 0, 1, 1
false, 0.8, 0.1, 0.92, 0.9199999999999999
false, 0.8, 0.2, 0.8400000000000001, 0.84
false, 0.8, 0.3, 0.7599999999999999, 0.76
true, 0.8, 0.4, 0.6799999999999999, 0.6799999999999999
true, 0.8, 0.5, 0.6, 0.6
true, 0.8, 0.6, 0.52, 0.52
false, 0.8, 0.7, 0.44, 0.44000000000000006
false, 0.8, 0.8, 0.35999999999999993, 0.3599999999999999
true, 0.8, 0.9, 0.2799999999999999, 0.2799999999999999
true, 0.9, 0, 1, 1
true, 0.9, 0.1, 0.91, 0.91
false, 0.9, 0.2, 0.8200000000000001, 0.82
true, 0.9, 0.3, 0.73, 0.73
false, 0.9, 0.4, 0.64, 0.6399999999999999
true, 0.9, 0.5, 0.55, 0.55
false, 0.9, 0.6, 0.46, 0.45999999999999996
false, 0.9, 0.7, 0.37000000000000005, 0.37
true, 0.9, 0.8, 0.2799999999999999, 0.2799999999999999
true, 0.9, 0.9, 0.18999999999999995, 0.18999999999999995

0 コメント:

コメントを投稿