タグ

algorithmに関するnitoyonのブックマーク (156)

  • http://www.d-project.com/jsp/flex/009_FreeTransform/

    nitoyon
    nitoyon 2007/08/10
    ASでのビットマップ変形の手法。 (URL変更) http://www.d-project.com/flex/009_FreeTransform/
  • 100% Pure JavaScript Camellia - mixi engineer blog

    NTTと三菱電機が共同開発した共通鍵ブロック暗号 "Camellia" の実装について以前調査していた時、ついカッとなってJavaScriptで実装してしまいました。類似の実装も既にあるようですし今は反省しているのですが、死蔵しておくのもナンなので晒しておきます。 ソースコードと使い方 小ネタなので、このソースコードはpublic domainということにしますね。 CryptoCipherCamellia-js-1.0.2 CryptoCipherCamellia.jsは128-bitブロック暗号Camelliaのプリミティブの実装と、暗号利用モードとしてCBCモードの実装を含んでいます。例を簡単に示すと次のような感じです: var SECRET_KEY = CryptoUtil.arrayFromHex( "00112233445566778899AABBCCDDEEFF"); var

    100% Pure JavaScript Camellia - mixi engineer blog
    nitoyon
    nitoyon 2007/08/07
    Camellia を JS で実装。24.2KB
  • FN0506002 - 描画メソッドで円を描く - Flash : テクニカルノート

    Platform: All Version: MX and above Flash MXから、描画メソッドが実装されました。その中で曲線を描くMovieClip.curveTo()メソッドは、コントロールポイントの指定がわかりにくいように思われます。稿では、このMovieClip.curveTo()メソッドを使って、正円を描くスクリプトをご紹介します。 1. 2次ベジエ曲線 MovieClip.curveTo()は、ベジエ曲線を描くメソッドです。ただし、PostScriptで使用されている、2点の各アンカーポイントにひとつずつコントロールポイントをもつ「3次ベジエ曲線」(Cubic Bezier)ではありません。ふたつのアンカーポイントとひとつのコントロールポイントで曲線を構成する「2次ベジエ曲線」(Quadratic Bezier)を使用します[*1]。 図001■2次ベジエ曲線と3次

    nitoyon
    nitoyon 2007/08/03
    ベジェ曲線を使って円を描く。
  • 【CG教科書】| 慶應義塾大学 千代倉研究室

  • Javascriptでdiffる ( with 形態素解析 ) (nakatani @ cybozu labs)

    Javascript で diff というのはいくつか試された例はあるようですが、まだこれといった決定打は出ていない様子です。 実は diff は見た目ほど軽い処理ではないので、Javascript にやらせるのはこれが結構大変…… diff の計算量は、おおざっぱに言うと比較対象の要素数の二乗に比例し(実際にはそれより小さくすることができるのですが、まあ話のイメージとして)、かつメモリを大量に消費するので、バッチ的な処理に最適化されていない Javascript にはどうしても荷が重いものとなってしまいます。 比較対象の要素数を減らせば当然計算量は減りますが、行単位で比較してもあまり嬉しくない(わざわざ Javascript で処理するということは自然文が対象と思って良いでしょう)。最小の文字単位だとギブアップ。 ということは形態素解析で分かち書きして、単語単位で diff するのが J

    nitoyon
    nitoyon 2007/06/29
    diff は計算量が多い。形態解析で単語単位にしてから「An O(NP) Sequence Comparison Algorithm」という論文のアルゴリズムで実装。さらに amachang で高速化。
  • 基礎から学ぶコンピュータ

    ビットごとの論理和とか、2の補数などの言葉の意味を知っていますか? 1と0だけで色々なことが出来る仕組みの解説から、マイクロプロセッサーがどうやってプログラムを実行していくかという、コンピュータの極めて基礎的な知識を提供するメールマガジンです。 バックナンバー 論理回路編アーカイブ compfund-001-012.zip (44KB) マイクロプロセッサ編アーカイブ compfund-013-046.zip (104KB) コンピュータとデータ編〈実数〉アーカイブ compfund-047-060.zip (32KB) 論理回路編 号内容

    nitoyon
    nitoyon 2007/06/23
    論理回路・Z80マイクロプロセッサ・小数表現などを基礎から解説。
  • Google Code Archive - Long-term storage for Google Code Project Hosting.

    Code Archive Skip to content Google About Google Privacy Terms

    nitoyon
    nitoyon 2007/06/14
    AS3 用のデータ構造を表すためのライブラリ。n次元配列、Binary Tree、BST、Graph など便利そうなものいっぱい。(例)TreeIterator http://lab.polygonal.de/2007/05/15/data-structures-example-the-tree-class/
  • カメラと被写体の関係から擬似3D空間を作る (1) - FICC LABS

    FICC 福岡です。 初めての投稿ですから、まずは簡単に自己紹介を。FICCでは主にFlashコーディングを担当していますが、PHPでの簡単なシステム設計や、場合によってはデザインを担当することも。皆さんの目に触れるところでは、FICC AnotherBookmark BetaのFlashインターフェースからその管理ツールの作成まで一人で行っています(ちなみにデザインも)。 今回はCOBYウェブサイトでも利用した3Dインターフェースの基的な部分を解説をします。ご存知の通り、Flashは3Dの概念を標準ではサポートしていません。近年ではPaperVision3DやSandyなどのAS2/3に対応したライブラリが公開されており、比較的簡単にFlashでも3Dが利用できる環境が整いつつあるようです。ですが今回は、改めて基から。 3Dの概念の基はオブジェクトとカメラの関係です。オブジェクトの

    nitoyon
    nitoyon 2007/05/24
    擬似3Dの作り方解説。AS2
  • 最小完全ハッシュ関数の作り方

    ■順列型の最小完全ハッシュ関数 0から4までの5個の数字が下のように並んでいる場合を例にして説明します。 5個の数字の並べ方は5!通りありますので5!(=120)通りの並べ方の総てに対して0から119までの数値を一意に割り付けることが目的となります。 34102 ここでは左側から順に数字を見ていくことにします。最初の数字は3で残りの数字の個数は4個ですね。 この残れさた数字の個数分の総順列数は4!ですが、この数量を基数と言います。 つまり左端の数字が何であるかを完全に識別する為に最低限必要な基となる重みのことです。 従って先ず最初の数字3に基数である4!を掛け算してはじき出します。 [3]4102 → 3*4! 次に左から2番目の数字ですが、ここから先はとても注意が必要です。 2番目の数字は4で残りの数字の個数は3個です。残りの数字の個数が3個なので基数は3!になります。つまり基数が変化

    nitoyon
    nitoyon 2007/05/06
    順列と組み合わせが、全ての並べ方の中で何番目に大きいかを計算する方法。
  • はてなブログ | 無料ブログを作成しよう

    この家に残したい香り。kako OSAJIでつくる、我が家だけのルームスプレー 先日、kako 家香で自分だけの家の香りを調香する体験をしてきました。 トップノートからベースノートまで、香りをひとつずつ確かめながら、自分の“好き”を丁寧に重ねていく時間。 香りって目に見えないけれど、記憶や気持ちと深くつながっている不思議な存在。今回の体…

    はてなブログ | 無料ブログを作成しよう
    nitoyon
    nitoyon 2007/04/29
    最短の線(Steiner Tree)問題。Processing から AS3 への移植。
  • スペル修正プログラムはどう書くか

    Peter Norvig / 青木靖 訳 先週、2人の友人(ディーンとビル)がそれぞれ別個にGoogleが極めて早く正確にスペル修正できるのには驚くばかりだと私に言った。たとえば speling のような語でGoogleを検索すると、0.1秒くらいで答えが返ってきて、もしかして: spelling じゃないかと言ってくる(YahooMicrosoftのものにも同様の機能がある)。ディーンとビルが高い実績を持ったエンジニアであり数学者であることを思えば、スペル修正のような統計的言語処理についてもっと知っていて良さそうなものなのにと私は驚いた。しかし彼らは知らなかった。よく考えてみれば、 別に彼らが知っているべき理由はないのだった。 間違っていたのは彼らの知識ではなく、私の仮定の方だ。 このことについてちゃんとした説明を書いておけば、彼らばかりでなく多くの人に有益かもしれない。Google

    nitoyon
    nitoyon 2007/04/29
    via 人気エントリ。
  • trick7 RTP Live: Info Bocoran RTP Slot Online Pragmatic Play Gacor Terlengkap -

    Halo bosku! kembali lagi bersama kami situs slot terpopuler dan terupdate no 1 di Indonesia, yang menyediakan ragam permainan […]

    nitoyon
    nitoyon 2007/04/19
    数学用語辞書。Foundation Actionscript Animation: Making Things Move によく出てくる単語。
  • RenderNote - RenderNote

    This domain may be for sale!

    nitoyon
    nitoyon 2007/04/06
    難しそう。未読。むしろ、読めない。
  • 第6回 上手なアルゴリズムの見つけ方

    図1に示すHTML形式のテキスト・データ(以下,HTMLデータ)があります。このHTMLデータをブラウザに表示させたときに「表示される文字列」と「その文字列に対して有効なタグ名」を対応付けるアルゴリズムを考えてください。結果は配列に格納して,画面に表示させるものとします(図2)。 見わたせば,世の中はアルゴリズムだらけです。私のようなプログラマは,日常生活でも「締め切り順に仕事をソートしてごらん」「仕事のスタックがたまっているからてんてこまい」など,いま置かれている状態をアルゴリズムやデータ構造になぞらえて会話することがよくあります。前回紹介した再帰処理と言えば,落語の演目の一つ,「頭山」です。自分の頭に生えた桜の木を引っこ抜いて,その跡にできた池に自分自身が身を投げる,という不思議な話ですが,これこそ再帰処理をよく言い表していると思います。 このように世の中には,ハッシュだってスタックだ

    第6回 上手なアルゴリズムの見つけ方
    nitoyon
    nitoyon 2007/04/03
    HTMLのパース方法の一例を解説。スタックをつかってやる。
  • Javascriptで継続渡し - ヒビノキロク

    id:nozom:20060317#1142577630の続き。世界で最も誤解された言語とも呼ばれるJavascriptを使って継続渡しを書いてみた。 なお、Javascriptの処理系としてRhino*1を使った。参考文献は『入門Javascript』(ISBN:4756138713)。 function fib(n) { if ((n == 1) || (n == 2)) return 1; else return fib(n - 1) + fib(n - 2); } function fib_cps(n, k) { if ((n == 1) || (n == 2)) return k(1); else return fib_cps(n - 1, function(v1) { return fib_cps(n - 2, function(v2) { return k(v1 + v2);

    Javascriptで継続渡し - ヒビノキロク
    nitoyon
    nitoyon 2007/03/06
    Lisp っぽくフィボナッチ。理解できん....
  • JavaScript1.7で平行プログラミングモデルを - ラシウラ

    Firefox2.0に搭載されているJavaScript1.7にはPython2.5風のgenerator機構があります。 function内でyield式を使うことで、その呼び出し結果がiteratorと同じインタフェースで利用可能なgeneratorオブジェクトになる。 generatorオブジェクトはnext()のほかにsend(v)メソッドを持つ。send(v)でyield式に復帰したとき、その式の値をvに置き換えられる。 generatorを使って平行プログラミングモデルの(擬似)システムを作るのは常套手段です。関数だけで中断再開を実現するには、処理させるコードをContinuation Passing Styleで書かなくてはいけないのですが、generator機構のyieldによって中断可能な処理でも比較的フラットに書くことができるからです。 平行モデルはいろいろあるのですが

    JavaScript1.7で平行プログラミングモデルを - ラシウラ
  • きまぐれ日記: 動的配列への追加コストはなぜ O(1)?

    動的配列への追加コストは O(1) ってのは覚えていればそれだけの話ですが,どうしてかと言われると意外と難しいものです. というのも, このO(1)ってのは動的配列の実装方法に強く依存しているからです.実装を知っていないと答えられません. 一般論として,1つ要素を追加するとき,配列に空きがなかったら新しく配列を作り直して全要素をコピーする必要があります.コピーのコストは O(n) だから,追加コストも O(n) になるという議論が混乱の元になっています. こういうときは,要素追加を n 回繰り返したときの計算量を n で割った平均をとるという解析方法が使われるそうです.一般に, ある operation C の計算量を C を n 回行ったときの計算量 O(n) を n で割った値 O(n)/n で評価する手法をならし解析 (amortized analysis)と言うそうです. さて,s

    nitoyon
    nitoyon 2007/02/19
    足りなくなったら倍のメモリ確保する実装の理論的な裏づけ。
  • GT Nitro: カーレーシング・ドラッグレーシングゲーム - Google Play のアプリ

    GT Nitro: Car Game Drag Raceは、典型的なカーゲームではありません。これはスピード、パワー、スキル全開のカーレースゲームです。ブレーキは忘れて、これはドラッグレース、ベイビー!古典的なクラシックから未来的なビーストまで、最もクールで速い車とカーレースできます。スティックシフトをマスターし、ニトロを賢く使って競争を打ち破る必要があります。このカーレースゲームはそのリアルな物理学と素晴らしいグラフィックスであなたの心を爆発させます。これまでプレイしたことのないようなものです。 GT Nitroは、リフレックスとタイミングを試すカーレースゲームです。正しい瞬間にギアをシフトし、ガスを思い切り踏む必要があります。また、大物たちと競いつつ、車のチューニングとアップグレードも行わなければなりません。世界中で最高のドライバーと車とカーレースに挑むことになり、ドラッグレースの王冠

    GT Nitro: カーレーシング・ドラッグレーシングゲーム - Google Play のアプリ
    nitoyon
    nitoyon 2007/02/06
    ベイジアンフィルタについての解説文章。昔勉強したけど忘れちゃった...
  • Keun Lee

    who we are management team locations customers partners careers press room what we do rich internet application development rich desktop development user experience design how we do it lookfirst approach practices showcase labs In this lesson, I shall introduce to you, the Matrix Class. Out of all the concepts to cover in Flex 2 and AS3, why did I choose to cover this topic? Well, believe it or no

    nitoyon
    nitoyon 2007/02/01
    Transformation Matrices の挙動をスライドバーで体感。
  • JavaScriptによる全文検索エンジン - llameradaの日記

    JavaScriptでインデックス型の全文検索エンジンを作ってみた。全文検索エンジンを作る際に問題となるのは、インデックスデータを部分的に読み込む方法である。通常はmmapやpreadなどを使ってファイルの一部を部分的に読み込むのだが、もちろん、ブラウザには使えない。ブラウザでファイルの一部分を読み込むには2通りの方法がある。1つは、ファイルを多数のファイルに分割する方法であり、もう1つはHTTPリクエストのRangeヘッダを利用して、ファイルの一部を取得する方法である。前者の利点は、ブラウザのキャッシュが効くことや、対応ブラウザが多いことである。後者の利点は、ファイル数が少なくなるので、インデックスの管理が容易になることである。今回はRangeヘッダの実用性にも興味があったので、後者の方法を用いた。 参考ページ:最速インターフェース研究会 :: Ajaxを使ったシンプルなチャット 転置イ

    JavaScriptによる全文検索エンジン - llameradaの日記
    nitoyon
    nitoyon 2007/01/24
    Content-Range で GET して大きいファイルの一部を非同期で読み取る。