タグ

algorithmに関するrc-2のブックマーク (12)

  • Algorithm - 0と1を次々と返す簡単なお仕事 : 404 Blog Not Found

    2010年09月03日05:30 カテゴリLightweight LanguagesMath Algorithm - 0と1を次々と返す簡単なお仕事 ごもっとも。 0と1を次々返す方法 - a2c.get.diary TrueだったらFalseで、FalseだったらTrueにしたい。 なんかそんなことそこかしこで必要で、その為の便利なものが あるのかなぁと思ったんだけど無いぽい Closure 来は一番おすすめなのだが… JavaScript ()が煩わしいが、perlrubyよりは自然。 #!/usr/bin/js var flipflop = function(p){ p = !p; return function(){ return p = !p; }; }; var fl = flipflop(); console.log(fl()); console.log(fl()); c

    Algorithm - 0と1を次々と返す簡単なお仕事 : 404 Blog Not Found
  • クロージャからProject Lambdaへ

    今回はJava SE 7で導入される機能について紹介していきます。 筆者が思うに、Java SE 7で最も議論を起こすであろう機能はクロージャです。クロージャの導入には紆余曲折がありましたが(詳しくは記事の後半で述べます)、とうとう2009年11月に正式に導入されることが決まりました。 そこで、連載ではいち早くクロージャについて取りあげることにします。 とは言うものの、現在提案されている仕様はまだたたき台レベルです。このため、今後仕様が大幅に変化する可能性があります。その点をご了承ください。 関数型とクロージャ クロージャの仕様を紹介する前に、クロージャがどういうものかということを説明しましょう。 ここでは例として、ボタンをクリックしたときのイベント処理を考えてみます。 Swingではイベントの処理をリスナを用いて行います。例えば、以下のようなコードになります。 JButton but

    クロージャからProject Lambdaへ
  • JSDeferred 紹介

    JSDeferred について JSDeferred は JavaScript のコールバックによる非同期処理を直列的に書けるようにするために作られたライブラリです。 foofunc(function () { barfunc(function () { bazfunc(function () { }); }); }); foofunc().next(barfunc).next(bazfunc); 簡単な使いかた 読み込み まずは JSDeferred を使うために、HTML に script 要素を追加します。 <script type="text/javascript" src="jsdeferred.js"></script> <script type="text/javascript" src="my.js"></script> JSDeferred は外部ライブラリに依存しておら

  • 第4回 JSDeferredを使いJSアプリのパフォーマンスを最適化する | gihyo.jp

    前回まででJSDeferredの基的な使いかたを説明しました。 今回は「非同期処理を簡単にする」から一歩進んで、既存アプリケーションの「非同期処理でパフォーマンス改善する」ことや、その他応用できる部分について説明します。 UIスレッド JavaScriptが担当するアプリケーションユーザインターフェイスの「はやさ」とはなんでしょうか? 単純に、最速で処理が終わることというのも一つですが、それを含めて最も重要なのは、ユーザにストレスを与えないことでしょう。多少実行速度が遅くても大抵待っていられますが、インターフェイスがなんの反応もしないと大きなストレスになります。 JavaScriptを実行するブラウザには、UIスレッドを呼ばれる、システム入出力を処理する流れがあります。JavaScriptは、その性質上どうしてもUIスレッド上で動かす必要があります(JavaScriptを実行中にページの

    第4回 JSDeferredを使いJSアプリのパフォーマンスを最適化する | gihyo.jp
  • OpenMPの基礎構文

    はじめに 昨今マルチコアCPUは一般化し、並列化処理の重要度がどんどん高まってきました。この流れはもう変わらないでしょう。ですから、我々開発者にとって並列処理の知識は絶対に必要なものです。とはいえ、日々の業務をこなしつつ資料が少ない並列化処理を身につけることは大変です。 そこで今回筆者は、並列化処理を実現するOpenMPの入門記事を書くことにしました。OpenMPを選択した理由は、一番効率が求められているのはC/C++プログラマーだと考えたからです。C/C++プログラマーの方々が並列処理を習得するお手伝いができれば幸いです。 なお、この連載で解説に使用するサンプルコードはあくまでもOpenMPの基礎を理解するための便宜的なものであり、実務でOpenMPを使用する際にはよく理解してから用途に適したプログラミングを行ってください。 対象読者 筆者が想定している読者はCの基的文法をマスターし、

    OpenMPの基礎構文
  • for 文を setTimeout に変換する(継続風) - llameradaの日記

    for 文を setTimeout に変換する - IT戦記が楽しそうだったので、久しぶりにJavaScriptを書いてみた。 継続風に書くと、通常のforループとsetTimeout付きforループが同じようになります。 JavaScriptも楽しいなぁ。また、書きたい。 // 通常版 forloop(0, 3, 1)(function(i, cont){ forloop(0, 7 ,1)(function(j, cont){ console.log('a' + i + "-" + j); cont(); }, cont); }, function(){}); // timeout版 to_forloop(0, 3, 1)(function(i, cont){ to_forloop(0, 7 ,1)(function(j, cont){ console.log('a' + i + "-"

    for 文を setTimeout に変換する(継続風) - llameradaの日記
  • for 文を setTimeout に変換する - IT戦記

    for 文で 100 項目とか 1000 項目とかあるテストケースを処理するとブラウザが固まる。 こんなダイアログが表示されます。 ということで for 文を setTimeout や setInterval に変換する事で定期的にブラウザに処理を戻すことができる。 // ここでは console.log のところでログを取ってますが // 通常は処理が入ります。 for (var i = 0; i < 3; i ++) { console.log('a' + i); } /* * 結果 * a0 * a1 * a2 */ これをまず while 文に変換 var i = 0; while (true) { if (!(i < 3)) break; console.log('a' + i); i ++; } /* * 結果 * a0 * a1 * a2 */ で、 setTimeout に

    for 文を setTimeout に変換する - IT戦記
  • [JavaScript] Nクイーン問題(ノンプリエンプティブマルチタスク風)

    有名な Nクイーン問題を解く JavaScript です。 アルゴリズムは、単純なバックトラックのみです。 ブラウザの動作をロックせずに、 処理状況をアニメーション表示させている点がミソです。 ノンプリエンプティブマルチタスク風に定期的に処理をブラウザ側に返すようにクラスを組むことで、 複数の処理を並列動作させる習作です。 盤の大きさ(デフォルトは8マス=8クイーン問題)を入力して、[開始] ボタンを押して下さい。 盤の大きさ: マス 0 個の解を検出しました。 [開始] ボタンを押して下さい。 アルゴリズム 深さ優先で、単純なバックトラックのみを使用しています。 また、再帰呼び出しもせずに、ぐるぐるループしています。 とりあえずなので、解の回転/反転すら使っていません。 試してませんが、JavaScript でビットマックを作ってマッチングさせると遅くなりそうですね。 上下反転くらいなら

  • javascript - でデータを圧縮/伸張する : 404 Blog Not Found

    2009年03月02日09:00 カテゴリLightweight Languages javascript - でデータを圧縮/伸張する これでもまだ税率が高かったので。 404 Blog Not Found:javascript - Yet Another Base64 transcoder Base64の利点は、なんといっても「固定税率」、それも比較的「税率が低い」ことにあります。Paddingなしなら、3バイトが4バイトにencodeされるので、33%ということになります。これに対してencodeURIComponentの税率は、UTF-8基準で最高で3倍、UTF-16基準で最高で4.5倍にも達します。 ついに負の税率、すなわち税還付を実現しました! まずはデモを。 Inflated + Base64-Decoded (Original): chars / bytes Deflate

    javascript - でデータを圧縮/伸張する : 404 Blog Not Found
  • RDBMSで使われるB木を学ぼう (1/3)- @IT

    第5回 RDBMSで使われるB木を学ぼう はやしつとむ アナハイムテクノロジー株式会社 2009/6/22 オブジェクト指向によって、アルゴリズムは隠ぺいされていることが多くなった。しかし、「用意されていない処理」が求められたときに対応できるだろうか(編集部) 第3回「AVL木で木構造を学ぼう」、第4回「もっとAVL木で木構造を学ぼう」と2回連続でAVL木について解説しました。 今回はAの後だからBというわけではありませんが、B木(B-Tree)を取り上げます。 B木の変種であるB+木やB*木は、OracleやPostgreSQL、Firebirdなどのリレーショナルデータベースでインデックスとして利用されている、メジャーな木構造です。 筆者はDelphi 2009でサンプルプログラムを作成していますが、Delphiをお持ちでない方は下記のURLからTurboDelphiをダウンロードして

  • はてなブックマークのコンテンツの JavaScript を高速化する - IT戦記

    はじめに 「新はてなブックマーク」になったということで、とっても便利になったのですが、ブックマーク一覧ページ*1が若干 JavaScript に時間が掛かっているみたいです。 というわけで 調査してみたいと思います。調査して、改善できそうなところは後で纏めて「はてなアイデア」にでも登録しようと思います。 この日記は調査しながら、過程を書いていくつもりです。 準備 まずは、人のサイトの JavaScript を書き換えて試してみるための環境を作ります。 作業用ディレクトリを作る とりあえず、ホームに HatenaJS というディレクトリを作ります。 $ mkdir HatenaJS $ cd HatenaJS CocProxy をダウンロードしてくる 以下から CocProxy というツールをダウンロードしてきます。 http://coderepos.org/share/wiki/CocPr

    はてなブックマークのコンテンツの JavaScript を高速化する - IT戦記
  • 最速インターフェース研究会 :: JavaScriptのデザインパターン - Singleton

    JavaScriptじゃねえと書けねえよ、ってやり方でデザインパターンを実装してみるコーナー。とはいってもデザインパターンとか良くわからないので適当に覚えながら作る。 間違ってる箇所あったらつっこんでくれるとありがたいです。 わかりやすい文章を書く能力が欠如してるのでデザインパターンって何だとかそういうのはこっち参照。 http://d.hatena.ne.jp/naoya/20050813/1123924312 JavaScriptのコンストラクタはPerl同様自在に定義できます。returnでobjectを返してやれば、newの結果としてそいつを使います。 普通にシングルトンなクラスを実装するにはこんな感じだと思います。 function Singleton(){ var self = arguments.callee; if(self.instance == null){ this.

  • 1