数学の公式をプログラムに起こすのを日課?にする
Contents
モチベーション
数学の公式が分からん。AI系の記事を見ると必ず数式が出てくるのですが弱いのでわからないのですよ
特にギリシャ文字とか入ってくる数式見るとワケワカランです。ωのとかεのとか。
なので特訓です。
言語はJavaScript
これは別になんでもいいんですけどね。
javascriptだと柔軟にかけるのでやりやすいってだけです。
一つだけ縛りを設けます。ループ文禁止です。関数の再帰で行います。
はじめはシグマから
これですね。なんか式の位置が変ですけど直し方がわからなかったのでこのまま行きます。
一番基本的な総和ですね。
これの公式なしバージョンと有りバージョンを作ります。
1から9までの総和をJavaScriptで求めます。
クロージャーで実装
</p> <p>function shiguma(offset, limit, func){ var sum = 0; var plus = 1; return func(func, sum, limit, offset, plus); }</p> <p>var result = shiguma(1, 9, (func, sum, limit, offset, plus)=>{ sum += plus; plus++; limit--; if(offset <= limit){ return func(func, sum, limit, offset, plus); } return sum; }); console.log(result);</p> <p>
クロージャーで自分自身を呼ぶってどうやるんですかね。分からないので引数で自分自身をそのまま渡してしまいました。
クロージャー部分を関数に置き換えたバージョン
"use strict";</p> <p>function shiguma(offset, limit, func){ var sum = 0; var plus = 1; return func(sum, limit, offset, plus); } function calc(sum, limit, offset, plus){ sum += plus; console.log("limit="+limit + ",sum="+sum); plus++; limit--; if(offset <= limit){ return calc(sum, limit, offset, plus); } return sum;</p> <p>}</p> <p>var result = shiguma(1, 9, calc); console.log(result);</p> <p>
和の公式を使用
"use strict";</p> <p>function shiguma(offset, limit, func){ return func(9); } function calc(n){ return (n / 2) * (1 + n); }</p> <p>var result = shiguma(1, 9, calc); console.log(result);
結構手こずった
JavaScriptのクロージャーの自分自身が呼び出せない問題でかなり時間を浪費してしまった。
こちらのソースはgithubに逐一上げていくことにする
日課は無理だろうけど週1程度には頑張る。
目指すところは数式を見ただけでソースが頭にパッと思い浮かぶまで。