2017年4月15日土曜日

開発環境

行列プログラマー(Philip N. Klein (著)、 松田 晃一 (翻訳)、 弓林 司 (翻訳)、 脇本 佑紀 (翻訳)、 中田 洋 (翻訳)、 齋藤 大吾 (翻訳)、オライリージャパン)の2章(ベクトル)、2.10(Vec の 実装)、2.10.6(リスト(配列)から Vec へ)、クイズ 2.10.1を JavaScript で取り組んでみる。

クイズ 2.10.1

コード(Emacs)

HTML5

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

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

JavaScript

let input0 = document.querySelector('#needle0'),
    input1 = document.querySelector('#haystack0'),
    btn0 = document.querySelector('#run0'),
    btn1 = document.querySelector('#clear0'),
    pre0 = document.querySelector('#output0'),
    p = (x) => {
        pre0.textContent += x + '\n';
    };

let Vec = (spec) => {
    let that = {},
        d = spec.labels,
        f = spec.func;

    that.d = d;
    that.f = f;
    
    return that;
};

let arrayToVec = (a) => {
    let l = [],
        f = {};

    a.forEach((x, i) => {
        l.push(i);
        f[i] = x;
    });
    return Vec({labels: l, func: f});
};

let output = () => {
    let v0 = arrayToVec([]),
        v1 = arrayToVec([10]),
        v2 = arrayToVec([1,2,3,4,5]);

    [v0, v1, v2].forEach((v, i) => {
        p(`${i}.`);
        p(v.d);
        Object.keys(v.f).forEach((k, i) => {            
            p(`${k}: ${v.f[k]}`);
        });
    });
};

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

output();












						

0 コメント:

コメントを投稿