2017年6月9日金曜日

開発環境

行列プログラマー(Philip N. Klein (著)、 松田 晃一 (翻訳)、 弓林 司 (翻訳)、 脇本 佑紀 (翻訳)、 中田 洋 (翻訳)、 齋藤 大吾 (翻訳)、オライリージャパン)の行列プログラマー(Philip N. Klein (著)、 松田 晃一 (翻訳)、 弓林 司 (翻訳)、 脇本 佑紀 (翻訳)、 中田 洋 (翻訳)、 齋藤 大吾 (翻訳)、オライリージャパン)の4章(行列)、4.1(行列とは何か?)、4.1.5(単位行列)、列の辞書表現、クイズ4.1.7、4.1.8を JavaScript で取り組んでみる。

クイズ4.1.7、4.1.8

コード(Emacs)

HTML5

<pre id="output0"></pre>

<button id="run0">run</button>
<button id="clear0">clear</button>

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

JavaScript

let div0 = document.querySelector('#graph0'),
    pre0 = document.querySelector('#output0'),
    btn0 = document.querySelector('#run0'),
    btn1 = document.querySelector('#clear0'),
    p = (x) => pre0.textContent += x + '\n',
    pObj = (obj) => Object.keys(obj).forEach((k) => p(`${k}: ${obj[k]}`));
    range = (start, end, step=1) => {
        let result = [];

        for (let i = start; i < end; i += step) {
            result.push(i);
        }
        return result;
    };

let Matrix = (labels, fn) => {
    let that = {},
        toString = () => {
            let [m, n] = labels,
                s = fn.map((k) => `[[${k[0].join(', ')}], ${k[1]}]`);

            return `Matrix([[${m.join(', ')}], [${n.join(', ')}]], [${s}])`;
        };

    that.toString = toString;
    
    return that;
};

let identity = (d) => Matrix([d, d], d.map((x) => [[x, x], 1]));

let output = () => {
    p('4.1.7');
    let ary = ['a', 'b', 'c'],
        labels = [ary, ary],
        fn = labels[0].map((x) => [[x, x], 1]);

    let m = Matrix(labels, fn);

    p(m);

    p('4.1.8');
    let d = ['a', 'b', 'c'];
    
    p(identity(d));
};

btn0.onclick = output;
btn1.onclick = () => pre0.textContent = '';
output();













						

0 コメント:

コメントを投稿