[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

c++とalgorithmに関するnitoyonのブックマーク (10)

  • ビットを数える・探すアルゴリズム

    作成日:2004.05.04 修正日:2012.09.01 このページは 2003年の9/11、9/28 の日記をまとめて作成。 はじめに PowerPC 系や Alpha などには population count と呼ばれるレジスタ中の立っているビット数を数える命令が実装されている。 集合演算を行うライブラリを実装したい場合などに重宝しそうな命令である。 職場でこの population count 命令について話をしているうちにビットカウント操作をハードウェアで実装するのは得なのか?という点が議論になった。 CPU の設計をできるだけシンプルにするためには、複雑で使用頻度の低い命令は極力減らした方がよい。 例えば SPARC は命令セット中にビットカウント演算があるが、CPU 内には実装しないという方針をとっている(population 命令を実行すると不正命令例外が発生し、それを

    nitoyon
    nitoyon 2009/11/08
    ビット数を数えるアルゴリズムいろいろ。bits &= bits - 1、0x55555555や0x33333333とのAND(Hacker's Delightより)
  • 一番右端の立っているビット位置を求める「ものすごい」コード - 当面C#と.NETな記録

    一番右端の立っているビット位置(RightMostBit)を求めるコードで速いのないかなーと探していたら、ものっっっすごいコードに出会ってしまったのでご紹介。2ch のビット演算スレで 32bit 値のコードに出会って衝撃を受けて、その後 64bit 値版のヒントを見つけたのでコードを書いてみました。 この問題は ハッカーのたのしみ―物のプログラマはいかにして問題を解くか (Google book search で原著 Hacker's delight が読めたのでそれで済ませた) で number of trailing zeros (ntz) として紹介されています。bit で考えたときに右側に 0 がいくつあるかを数えるもの。1 だと 0、2 だと 1、0x80 なら 7、12 なら 2 といったぐあい。0 のときに表題どおりの問題として考えるといくつを返すの?ってことになるので、

    一番右端の立っているビット位置を求める「ものすごい」コード - 当面C#と.NETな記録
    nitoyon
    nitoyon 2009/07/05
    むずかしい
  • 投稿169  日常の中の曲率 S.H氏

    平素はSo-netをご利用いただき、誠にありがとうございます。 このたび、誠に勝手ながら、2021年1月28日(木)をもちまして、「U-page+」サービスの提供を終了させていただくこととなりました。 サービスをご利用いただいておりますお客さまには、ご迷惑をおかけすることを深くお詫び申し上げますとともに、これまでのご愛顧に厚くお礼申し上げます。 記 ■提供終了サービス名 U-Page+ ■提供終了日 2021年1月28日(木) 15:00 提供終了日以降、お客さまのWebコンテンツの表示、FTPからのデータダウンロードができなくなります。 ■解約のお手続きについて 2021年1月28日(木)をもって自動解約となりますので、お客さまご自身での解約のお手続きは必要ございません。 サービス終了日以前に解約をご希望のお客さまは、解約のお手続きが必要です。 下記のWebページよりお手続きください。

    投稿169  日常の中の曲率 S.H氏
    nitoyon
    nitoyon 2009/04/09
    STLコンテナの計算量、どういうときにどれを使うとよいか、内部構造、使い方。
  • お手軽パーザー

    日頃より楽天のサービスをご利用いただきましてありがとうございます。 サービスをご利用いただいておりますところ大変申し訳ございませんが、現在、緊急メンテナンスを行わせていただいております。 お客様には、緊急のメンテナンスにより、ご迷惑をおかけしており、誠に申し訳ございません。 メンテナンスが終了次第、サービスを復旧いたしますので、 今しばらくお待ちいただけますよう、お願い申し上げます。

    nitoyon
    nitoyon 2009/01/24
    10分で書く50行の再帰下降 LL(1) 数式パーサー。左再帰や先読みにどう対処するか。
  • Spaghetti Source - 各種アルゴリズムの C++ による実装

    ACM/ICPC(プログラミングコンテスト)系列の問題を解くことを目標にして,各種アルゴリズムを C++ で実装してみた.極めて意地が悪い類の問題には対応していないし,特定の入力に対して高速に動くということもない.計算量も最良とは限らない. これらを参考にする方への注意とお願い: これらの記述は正確とは限りません.参考文献を参照することを強く推奨します.間違っている場合は是非教えてください. これらのプログラムは間違っているかもしれません.各人で検証することを強く推奨します.バグがあれば是非教えてください. 分類が怪しいので,これはこっちだろう,ということがあればコメントを下さると助かります. 注意! 現在書き換え中 TODO 分類を正しく行う. 全体的に説明と使い方を詳しく. Verify していないものを Verify. ボロノイ図(いつになることやら……) 基 テンプレート グラフ

    nitoyon
    nitoyon 2008/09/17
    色んなアルゴリズムをC++で実装したもの。簡単な説明もある。
  • ガベージコレクションの実装法と評価

    1.はじめに プログラミング言語とはシステム化する対象物を抽象化し、コンピュータで処理可能なコードを記述するために用いる人工言語である。プログラミング言語はコンピュータの機械語と一対一の対応をもったアセンブラから始まり、コンパイラを用いて機械語に翻訳することを前提としたコンパイラ言語、インタプリタと呼ばれるプログラムがソースコードを解釈し実行するスクリプト言語と、記述できる抽象度を高める方向へと進化してきた。 プログラミング言語はその存在理由から、より抽象度の高い記述が行えること、すばやい開発を行える事が求められる。抽象度の高い記述とは、プログラムがどういう処理を行うか(HOW)ではなく何の処理を行うか(WHAT)を記述しやすい構文、機能を持っていることを、すばやい開発とは記述性の高さ、コードの密度の高さ、バグの発生しにくい構文、機能を持っていることをさす。 この抽象度の高い記述、すばやい

    nitoyon
    nitoyon 2008/06/26
    gc。未読。
  • 計算物理のためのC/C++言語入門

    Last revised on May 25, 2000 UNIX & XWindow 環境における C/C++プログラミング言語の基礎とその計算物理への応用を解説します。 このホームページの古い版の偽ミラーサイトが存在するのでご注意ください。 物のサイトは http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/ です。 前書き 推奨図書一覧 C言語とC++言語の基礎文法の初心者向け解説 (プログラム初心者を対象としたC/C++言語の入門です) 第1章 C言語とC++言語の役割 第2章 簡単な計算 第3章 ループで繰り返し計算 第4章 配列で大量データ処理 第5章 関数で計算の分担 第6章 文字列の操作 第7章 ファイルの操作 第8章 グラフィック(XWindow System利用者向け) 高校物理の計算例 (高校生を対象として初歩的な物

    nitoyon
    nitoyon 2008/06/04
    C++で計算。流体力学、量子力学、数値積分法。
  • Optimized pow() approximation for Java, C / C++, and C#

    Optimized pow() approximation for Java, C / C++, and C# I have already written about approximations of e^x, log(x) and pow(a, b) in my post Optimized Exponential Functions for Java. Now I have more In particular, the pow() function is now even faster, simpler, and more accurate. Without further ado, I proudly give you the brand new approximation: Approximation of pow() in Java public static double

    Optimized pow() approximation for Java, C / C++, and C#
    nitoyon
    nitoyon 2007/10/07
    pow()をビット演算で近似して高速化。
  • Visual C++の勉強部屋

    理工系、特に電気系、の学生と技術者を対象としたVisual C++の解説を行います。Visual C++を始めたいが、よく分からないという人は、これを参考にしてください。ただし、初めてプログラムを学ぶ全くの初心者向けではありません。 資料の一部のJava版が(株)翔泳社のウエブサイトCodeZineにありますので、こちらもご利用ください(Java版とある場所をクリックして下さい)。Visual C++ 6.0版(現在は全部削除)が最初に公開され、そのJava版がCodeZineに寄稿され、その後に現在のVisual C++ 2005 Express Edition版が作成されています。 Java版は、すべてアプレットになっていますので、ブラウザから試してみることができます(Javaランタイム必要)。 Visual C++ 2008 Express Editionが無償でダウンロード

    nitoyon
    nitoyon 2007/10/04
    画像処理に関するアルゴリズムがいろいろ。細線化、DCT、マッチングなどなど。
  • FastLSM: Fast Lattice Shape Matching for Robust Real-Time Deformation

    FastLSM: Fast Lattice Shape Matching for Robust Real-Time Deformation Alec Rivers Doug James Cornell University We introduce a simple technique that enables robust approximation of volumetric, large-deformation dynamics for real-time or large-scale offline simulations. We propose Lattice Shape Matching, an extension of deformable shape matching to regular lattices with embedded geometry; lattice v

    nitoyon
    nitoyon 2007/10/03
    Fast Lattice Shape Matching。なんかすごい。C++ のソースと論文あり。特許とってるので商用利用は要交渉。
  • 1