タグ

アルゴリズムに関するalluserのブックマーク (3)

  • Sublime Textの「あいまい一致」をリバースエンジニアリング | POSTD

    Sublime Text は、私のお気に入りのプログラミング用テキストエディタです。 Sublime Textで気に入っている特徴の1つは、あいまい検索アルゴリズムです。ファイルや関数の検索が超高速なのです。これまで多くの人が、インターネット上で、この仕組みについて質問していましたが、満足の行く回答はありませんでした。そこで、私が自らこれを解明することにしました。 全部読むのが面倒な方へ 文を読まずに最終結果だけ知りたいですか? 了解! 私は、あなたを責めたりしませんよ。 インタラクティブなデモ: こちらをクリック ソースコード: C++JavaScript Sublime Textの仕組み Sublime Textのあいまい一致とは何でしょうか。そして、なぜそれはそんなに賢いのでしょうか。聞いてくれてうれしいです。 Sublime Textには、2つの非常に便利なナビゲーション関

    Sublime Textの「あいまい一致」をリバースエンジニアリング | POSTD
  • Atomの重要なプリミティブの最適化 | POSTD

    これまで数カ月にわたり、私たちはAtomのパフォーマンスの改善に取り組んできました。その結果、最適化するための課題として特に興味深いのが マーカ という構造体だと分かりました。マーカはバッファの内容が変更されても、バッファの論理的な領域を追跡することができます。例えば、以下の図で緑色のハイライトがかかった部分のマーカは、文字列を書き換えたとしても同じ領域に残り続けます。 マーカは、Atomの機能を幅広くサポートする基的なプリミティブです。検索および置換を行う場合には、マーカを使うことで 検索結果のハイライト表示 ができます。スニペットの場合も、文字列を書き換える際にマーカを使い、 タブストップで移動する位置 を追跡することができます。さらにはスペルチェックの場合でも、マーカを使って スペルミスのある単語を抽出 したり、その単語を書き換える際の再チェックをしたりすることもできます。そもそも

    Atomの重要なプリミティブの最適化 | POSTD
  • 組み合わせを列挙する - kuidaored’s blog

    SRMとかやってると組み合わせをみる必要があったりして、そのたびに同じようなコードを書いていたので、なんとか出来ないかと思って書いてみた。 import java.util.*; public class Combinations<T> implements Iterator{ private List<List<T>> combinations; private List<T> list; private int[] index; private boolean[] visited; private int r; private Iterator<List<T>> iterator; public Combinations(T[] array, int r){ this.list = Arrays.asList(array); this.index = new int[r]; this.

    組み合わせを列挙する - kuidaored’s blog
  • 1