タグ

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

  • 徐々に高度になるリングバッファの話 - Software Transactional Memo

    リングバッファのイメージ図 1. リングバッファとは何か 機能的にはFirst In First Out (FIFO)とも呼ばれるキューの一種であるが、リング状にバッファを置いてそれの中でReadとWriteのインデックスがグルグルと回る構造をとる事によって容量に上限ができることと引き換えに高速な読み書き速度を得たものである。キューを単に実装するだけなら山ほど方法があって線形リストを使ってもいいしスタックを2つ使っても原理的には可能だ。その中でもリングバッファを用いた方法の利点はひとえに性能の高さでありメモリ確保などを行わないお陰でシステム系の様々な場所で使われている。 これの実装自体は情報系の大学生の演習レベルの難度であるが少し奥が深い。まずリングバッファのスタンダードなインタフェースと実装は以下のようなものである。 class RingBuffer { public: explicit

    徐々に高度になるリングバッファの話 - Software Transactional Memo
    Nilfs
    Nilfs 2024/05/02
    あとでちゃんとやってみたいところ
  • ポケモンの最強タイプを考える【グラフ理論】 - Qiita

    導入 先日、ポケモンの最新作『Pokémon LEGENDS アルセウス』が発売されました。ポケモン愛好家の中で密かに話題を集めたのが、新たに登場したポケモン「ゾロア(ヒスイのすがた)」と「ゾロアーク(ヒスイの姿)」のタイプです。なんと驚くべきことに、両者のタイプは未だ登場したことのなかった「ノーマル・ゴースト」だったのです。 ポケモンを知る人には説明不要ですが、これはノーマルタイプの唯一の弱点であるかくとう技をゴーストタイプで無効化しながら、ゴーストタイプの弱点であるゴースト技をノーマルタイプで無効化するという、非常にバランスのとれた、まさに夢のような複合タイプです。一部では、この「ノーマル・ゴースト」こそ最強の組み合わせなのではないかと噂されました。 しかし、果たして当にそうなのでしょうか? ポケモンのタイプは全部で18種類あり、一匹のポケモンは二つまでタイプを持つことができます。考

    ポケモンの最強タイプを考える【グラフ理論】 - Qiita
  • クリエイティブコーディングの教科書

    ゲームエンジンや3Dソフトウェアを利用して高度な表現ができるこの時代でも、プリミティブな描画や動き、アルゴリズムから学べることは多い。それらをJavaScriptで書くクリエイティブコーディングという形で学べる手引書が書となる。

    クリエイティブコーディングの教科書
    Nilfs
    Nilfs 2021/11/22
    ボリュームがすごい。全然読めてないけど、そのうち読むやつだ
  • 効率的にゲームを更新する | POSTD

    先日、 Things that can go wrong when downloading(ダウンロード時に上手くいかないものごと) についての記事を書きました。その記事に、ネットワークの問題から妥当でないコンテンツ、不完全なハードウェアに至るまで、ゲームを最初にインストールする際に発生することがある一連の原因をリストアップしました。 今回の記事では、ゲームの前バージョンが正常にインストールされているときに、そのゲームを新しいバージョンにアップグレードするのにどんな方法が使えるかについて考えます。 圧縮 あるユーザが利用できる帯域の量は、通常、一定です。ユーザのインターネットアクセスの論理的な最大速度は20mbps、100mbps、1gbps、または、国によってはそれよりずっと低いものです。 私の自宅にはまだ光ファイバが引かれていないので、アクセスは20mbpsという遅さですが、インターネ

    効率的にゲームを更新する | POSTD
  • 文字列アルゴリズムの学びかた - Hatena Developer Blog

    こんにちは!はてなアプリケーションエンジニアの id:takuya-a です。 みなさんは、このような疑問をもったことはありませんか? grep はどのように文字列を検索しているのか? MeCab はどうやって辞書を高速にルックアップしているのか? パーサやコンパイラを作りたいけど、何から始めればいいのか? 稿では、「文字列アルゴリズムとはどんなものなのか?」「なぜ重要なのか?」「何を知っておくべきか?」「どうやって勉強すればいいのか?」といった疑問にお答えしていこうと思います。 文字列アルゴリズムの意外な応用や、モチベーションを保ちやすい勉強のしかた、文字列アルゴリズムを勉強するために行った社内での取り組み、実装するときのコツといったトピックについても触れています。 このエントリは、はてなエンジニアアドベントカレンダー2016の22日目の記事です。昨日は id:syou6162 さんに

    文字列アルゴリズムの学びかた - Hatena Developer Blog
    Nilfs
    Nilfs 2016/12/24
    あとで読む系だ。
  • diffの動作原理を知る~どのようにして差分を導き出すのか | gihyo.jp

    UNIXの基的なコマンドの1つであるdiff。 これに実装されているアルゴリズムは実に興味深い世界が広がっています。 稿では、筆者が開発した独自ライブラリ「dtl」をもとに「diffのしくみ」を解説します。 はじめに diffは2つのファイルやディレクトリの差分を取るのに使用するプログラムです。 ソフトウェア開発を行っている方であれば、SubversionやGitなどのバージョン管理システムを通して利用していることが多いかと思います。稿ではそのdiffの動作原理について解説します。 差分の計算の際に重要な3つの要素 差分を計算するというのは次の3つを計算することに帰結します。 編集距離 2つの要素列の違いを数値化したもの LCS(Longest Common Subsequence) 2つの要素列の最長共通部分列 SES(Shortest Edit Script) ある要素列を別の要

    diffの動作原理を知る~どのようにして差分を導き出すのか | gihyo.jp
  • Iconfinder: 画像データの重複チェックのアルゴリズム - ワザノバ | wazanova

    http://blog.iconfinder.com/detecting-duplicate-images-using-python/ 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約5時間前 Iconfinderは以前、500 Startup Fundのデモdayでプレゼンするのを見た記憶があります。それから資金調達もできたようで、無事生き残ってますね。 アイコン等の画像ファイルの検索 & 販売をするサイトですが、悪いユーザがIconfinderから画像をダウンロードした後に、そのまま、もしくは多少改変して、Iconfinderにアップして販売しようとする不正行為があるようです。その対策のための検知アルゴリズムについてブログで紹介しています。 一般的な画像データをハッシュ化するアルゴリズムでは、画像のごく一部

  • Zinnia: 機械学習ベースのポータブルな手書き文字認識エンジン

    Zinnia: 機械学習ベースのポータブルなオンライン手書き文字認識エンジン [日語][英語] Zinniaは機械学習アルゴリズム SVM を用いたポータブルで汎用的な オンライン手書き文字認識エンジンです。Zinniaは組み込みの容易さと汎用性を高めるために、 文字のレンダリング機能は持っていません。Zinniaは文字のストローク情報を座標の連続として受け取り、 確からしい順にスコア付きでN文字の認識結果を返すだけに機能を限定しています。 また、認識エンジンは完全に機械学習ベースであるために、文字のみならずユーザの任意のマウス・ペンストロークに対して任意の文字列をマッピングするような認識エンジンを小コスト作成することができます。 主な特徴 機械学習アルゴリズムSVMによる高い認識精度 ポータブルでコンパクトな設計 -- POSIX/Windows (C++ STLのみに依存) リエント

  • 404 Blog Not Found:アルゴリズム百選 - ハッシュを再発明する

    2007年12月03日11:15 カテゴリアルゴリズム百選 アルゴリズム百選 - ハッシュを再発明する (実はハッシュを使って)配列を再発明したところで、今度は配列を使ってハッシュを再発明してみます。 現代におけるプログラミングでは、連想配列(associative array)というものを非常によく使います。通常の配列では、データを取り出すのに整数の番号を使いますが、連想配列ではその代わりに文字列を使います。これは非常に便利で、多くの言語ではオブジェクトの実装にこの連想配列を用いています。JavaScriptのオブジェクトも実は連想配列です。 しかし、これを実装するには、少し工夫が必要です。単なる配列であれば、ただ等間隔に並べておけば、「何番目を出してくれ」で事足りますが、連想配列で「'dankogai'番目」といっても人間にもコンピューターにもなんのことかさっぱりわかりません。 誰でも

    404 Blog Not Found:アルゴリズム百選 - ハッシュを再発明する
    Nilfs
    Nilfs 2009/04/10
    簡単なハッシュ関数を再発明
  • わずか681バイトで動くぷよぷよ

    「わずか565バイトテトリスのプログラミング解説」で載せた、「10行ぷよぷよ」の作者pascalさんからトラックバックが来ました。 Short Coding - pascal's memo 勝手にソースコードを晒してしまって、すみません…。 テトリス以上に、ぷよぷよの方に感動している方もたくさんいました、とご報告しておきます。 (テトリスからぷよぷよへの感動の連鎖や!) しかも今確認してみたところ、前回載せていたソースコードと動作サンプルとして動かしていたページのソースコードが違っていました。 前回載せていたソースコードは古い方で、動作サンプルの方は新しいソースコードでした。(下キーで加速するバージョン) 最新版のソースコードは、pascalさんのサイト ぷよぷよ に載っています。 最新版のソースコードからさらに短縮して、 document.body.innerHTML の部分を、body

    わずか681バイトで動くぷよぷよ
  • 1