タグ

javascriptとalgorithmに関するcrafのブックマーク (5)

  • マイナンバーのチェックディジット計算

    [2018-08-07 おことわり] JavaScriptで書かれたマイナンバーのチェックディジット計算プログラムを公開していましたが,個人情報保護委員会様から,入力されたものがネットに流れないことはソースで確認したが,マイナンバー収集を誤認するようなページは好ましくないのではないかというご意見をいただきました。確かにもっともなことですので,ソースコードを示すだけにとどめることにしました。このソースを打ち込めば確認できますので,ご自分でお試しください。 <p><label>マイナンバーの先頭11桁:<input id="input" size="13" onchange="check()"></label></p> <p>マイナンバーの最後の桁(チェックディジット):<input id="output" size="5" readonly></p> <script> function ch

  • プログラマの三大美徳の啓発の勧め : 怠惰、短気、傲慢 ― JavaScriptで遅延評価 | POSTD

    (編注:2016/5/31、頂いたフィードバックを元に記事を修正いたしました。) larry wall 怠慢と勤勉 コンピューティングにおいて、”laziness(怠惰)”は幅広い意味の単語です。大抵は、もし必要が無ければ何もしないということを意味します。その正反対を指すのは”eager(勤勉)”です。後で必要になる場合に備えて、できるだけ働くということを意味します。 以下のJavaScriptを見てみましょう。 function ifThen (a, b) { if (a) return b; } ifThen(1 === 0, 2 + 3) //=> undefined ここで、問題です。「JavaScriptは 2+3 を評価する?」答えはお分かりですね。「評価する」です。呼び出し関数に、引数を引き渡すこととなると、JavaScriptは eager(勤勉=先行評価) で、式の全てを

    プログラマの三大美徳の啓発の勧め : 怠惰、短気、傲慢 ― JavaScriptで遅延評価 | POSTD
  • 数値の先頭に0を追加して桁をあわせる - うなの日記

    数値の先頭に0を追加して桁をあわせる関数を書きました。 /** * 必要な桁数まで0を埋める。 * @param number 数値 * @param size 桁数 */ function fillZero( number, size ) { var s = Math.log( number ) * Math.LOG10E; for( i=1,n=size-s,str="";i<n;i++ ) str += "0"; return str+number; } サンプルは以下。 var out = document.getElementById("out"); out.innerHTML += "3, 1 : " + fillZero( 3, 1 ) + "<br/>"; out.innerHTML += "3, 2 : " + fillZero( 3, 2 ) + "<br/>"; ou

    数値の先頭に0を追加して桁をあわせる - うなの日記
  • 対数を使った数値の0詰め処理について解説してみた - Seasons.NET

    JavaScriptでsprintfのフォーマット書式みたいに桁数に満たない数字の場合、 左0詰めをしてほしいのですが、それがないっぽいので調べていたところ。 こちらの記事にその式が掲載されており、 対数に対する知識が少し乏しかったので 学習がてらキモになるところ調べてみました。 ポイントとなるのは、 Math.log(x) * Math.LOG10E だと思います。これがなぜいきなり出てきているか?を解説してみます。 あとの計算は非常に簡単なので解説を割愛します。 まず数字の桁数を求める前に, 10 = 10 = pow(10,1) 100 = 10x10 = pow(10,2) 1000 = 10x10x10 = pow(10,3) と表すことができるのはわかりますよね。 powの第2引数は、指数を示しているわけですが、 この数に+1した数が桁数になっていますよね。 この指数(x)にあ

    対数を使った数値の0詰め処理について解説してみた - Seasons.NET
  • Diff algorithm - 枕を欹てて聴く

    id:smoking186 さんの指摘を受け, First Authorの名前などを付加しました. どうもです. 記事内のcodeは最適化などを施しておらず, 冗長に, 定義どおりに書いています. ifがまとめられたりとかしますが, そのあたりはご容赦を... Rubyでlevenshtein距離を見て以来, 個人的にdiffブームが来ていた. 計算量O(ND) / O(NP)のalgorithmなどがあるのは知っていたが, 論文(英語)および, 解説のみ, またはソースコードのみなど分かれているものが多く, algorithmに疎い自分には理解するのに大変時間がかかってしまった. しかしやっとわかったので, 解説+JS実装してみる. 解説とソースコードがセットだと, 多少はわかりやすくなるかと... 自分は正直これくらい細かく言われないとすぐにはわかんない人なので(the O(ND)だけ

    Diff algorithm - 枕を欹てて聴く
  • 1