2017年4月20日木曜日

学習環境

数学読本〈4〉数列の極限,順列/順列・組合せ/確率/関数の極限と微分法(松坂 和夫(著)、岩波書店)の第15章(「場合の数」 を数える - 順列・組合せ)、15.3(二項定理)、多項定理、問46.を取り組んでみる。


  1. (4+616)=(96)=(93)=3·4·7=846+0+0+0=6,(60)=1,a95+1+0+0=6,(61)=6,a9b4+2+0+0=6,(62)=15,a4b24+1+1+0=6,(64)·(21)=30,a4bc3+3+0+0=6,(63)=20,a3b33+2+1+0=6,(63)·(32)=60,a3b2c3+1+1+1=6,(63)·(31)·(21)=120,a3bcd2+2+2+0=6,(62)·(42)=15·6=90,a2b2c22+2+1+1=6,(62)·(42)·(21)=180,a2b2cd

コード(Emacs)

HTML5

<button id="run0">run</button>
<button id="clear0">clear</button>
<pre id="output0"></pre>
<script src="sample46.js"></script>

JavaScript

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

let range = (start, end, step=1) => {
    let iter = (i, result) => {
        return i >= end ? result : iter(i + step, result.concat([i]));
    }
    return iter(start, []);
};
let factorial = (n) => {
    return n <= 1 ? 1 : n * factorial(n - 1);
};

let combination = (n, r) => {
    return factorial(n) / (factorial(r) * factorial(n - r));
};

let output = () => {        
    p('46.');
    [
        [[9, 3]],
        [[6, 0]],
        [[6, 1]],
        [[6, 2]],
        [[6, 4], [2, 1]],
        [[6, 3]],
        [[6, 3], [3, 2]],
        [[6, 3], [3, 1], [2, 1]],
        [[6, 2], [4, 2]],
        [[6, 2], [4, 2], [2, 1]]
    ].forEach((args) => {
        p(args.reduce((prev, x) => prev * combination(...x), 1));
    });
};

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

output();
46.
84
1
6
15
30
20
60
120
90
180

0 コメント:

コメントを投稿