あいつの日誌β

人生はお酒があれば何とかなります。 drunkard.tokyo

memoize するときに array in array な table を作りたい

最近英語の勉強するために英語でアルゴリズムを解説している動画を youtube で見ています。 計算量が増えないように memorize する事が多いようです。 さて、memoize 用の連想配列を頑張って書くのいやなので([[],[],[],[]]みたいなの)関数にしてみました。

こんな感じで良いかな? m, n が 0 から始まるのか 1 から始まるのかによって m, n の箇所が変わると思いますが、まあ少しぐらい多めにマッピングしておいてもいいのかな。もっと良い書き方、もしくはライブラリ化されているのをご存知の方はぜひご教授ください。

const _ = require('lodash');

const getArrayInArray = (m, n) => _.times(m + 1, () =>
  _.times(n + 1, _.constant())
);

const memoTable = getArrayInArray(2, 3); 

memoTable[2][3] = "memo";
console.log(memoTable[2][3]);