algorithmとtipsに関するdotsargのブックマーク (14)

  • strlen() の深淵 - Qiita

    あらまし strlen() という関数がある。御存知の通り、文字列の長さを算出する標準 C ライブラリの関数だ。 やってることは単純で、例えば以下のように実装できる。 size_t strlen_simple(const char* str) { const char* p = str; while (*p) ++p; return size_t(p - str); } '\0' が見つかるまでポインタを進め、初期位置との差分を返すだけだ。これで機能的には std::strlen() と同等である。 では、速度的にはどうだろう?適当にベンチマークを書いて MSVC 2022 でコンパイル&実行するとこうなった。

    strlen() の深淵 - Qiita
    dotsarg
    dotsarg 2024/04/02
    8 byte のデータ型の中に 0 の byte が含まれるかどうかを Bit 演算で求める方法が記載されている。
  • #06 2号の設計図 - ゲーム制作コラム - ゲーム制作 - 安永ノリカズのゲーム制作&Javaサンプル

    そして、例えば、以下のような条件で会話が発生したとします。 天候:晴 場所:くろねこ広場 自分:歩いている、元気がある 相手:ほうきに乗っている、元気ない、虹色の川に行く途中 このとき、自分の選択肢は、発生条件に合致するものがリストアップされ、次のようになります。 【自分】 [会話02][晴の日あいさつ]『いやあ、いい天気だね』 [会話03][元気がある]『ラン、ラララン~』 [会話05][相手がほうきに]『どこかにお出かけかい?』 [会話07][くろねこ広場にいる]『新しい魔法、覚えた?』 で、「いやあ、いい天気だね」を選んだときの相手の反応は、先の条件に、 [晴の日のあいさつを受けた]という情報を加えてリストアップされた 【相手】 [会話10][晴の日の答え]『気分がスカッとするよね』 [会話04][元気がない]『ふー……』 [会話06][相手が歩いている]『お散歩中ですか?』 [会話

    dotsarg
    dotsarg 2023/10/27
    選択肢テーブルとメッセージテーブルについての説明が掲載されている。
  • 画面効果その1・パーティクル - PICO-8ゲーム開発入門(12) - AUTOMATON

    PICO-8でプログラミングを1から学び、ゲーム作成を目指す連載第12回目は「パーティクル」について。パーティクルを追加することで、一気にゲームっぽさが増します。 PICO-8でプログラミングを1から学ぶ連載、第12回です。前回はこちら。プログラミング経験者の方は、日語マニュアルを読んで、すぐに創作にとりかかりましょう。作った作品は、ぜひ掲示板へ。 前回までで、NPCをビームでやっつける仕組みを完成させました。今回は、パーティクルと画面を揺らす演出を追加して、「ゲームっぽさ」をグッと向上させます。 パーティクルとは パーティクルとはすなわち粒子です。多数の”つぶつぶ”に動きをつけることによって、火花、爆発、水滴、煙などを表現できます。 パーティクルの例 パーティクルを扱うコードの構成 パーティクルを扱うためのコードは、以下のような構成になります。 -- パーティクルを入れる配列 ptcl

    画面効果その1・パーティクル - PICO-8ゲーム開発入門(12) - AUTOMATON
  • The Realm of Revery

  • 新・C言語 ~ゲームプログラミングの館~ [DXライブラリ]

    前回に引き続き、sin波を使って滑らかに物体を移動させる方法について勉強していきましょう。 前章では上下に振動運動をしましたが、sin波はある地点から、ある地点まで滑らかに移動させるためにも使えます。 ここで、sin波のグラフを再確認しましょう。 赤い部分 (xが0~PI/2の区間) yは0から始まって、xがPI/2に近づくほどyの変化量は滑らかになり、xがPI/2になると丁度1になります。 sin波において、x=0はもっともyの変化量が多い地点ですから、突然動き始めて段々動くスピードが遅くなり、止まるイメージになります。 例えるなら、おはじきを指でピンとはじいた時に動くおはじきの動きに似ています。指でピンとはじいた瞬間最もスピードが速く、次第に摩擦でスピードが減り、止まりますね。 (え、今の人はおはじきとか知らない?!) これに対して、ゆっくり動き始めて、ゆっくり止まる曲線もsin波の中

    dotsarg
    dotsarg 2017/12/01
    sin カーブを使用して加減速する方法が記載されている。
  • Kaneko's Software Page

    金子 勇のソフトウェアページへようこそ このページでは私が趣味で作成したソフトウェアを公開しています 最近の更新内容 2013/6/8  NekoFight Ver2.4公開 最近作ったプログラム NekoFight (最新版 Ver 2.4) - New - 物理演算とAIベースの格闘ゲーム(になる予定) (Win32+OpenGL+OpenMP, フリーソフト) 昔作ったプログラム PBO-FS関連 オブジェクト指向UNIXの基盤となる、PBO-FS(Prototype-Based Object File System)関連のページです。 Windowsプログラム関連 趣味で作った、Windows用のプログラムが置いてあります。主にDirectXを用いた3Dリアルタイム系プログラムです。 サンプルプログラム関連 プログラマさん向けに作った各種のサンプルプログラムです。主にWindows

  • 立っているビットの数を数える-C/C++-水無瀬の部屋

    立っているビットの数を数える関数を作る。 //********************************************************* // 値 uc を2進表記した場合に現れる 1 の数を返す。 //********************************************************* int // 立っている ビットの数 bitcount ( unsigned char uc ) { int bit; for( bit = 0; 0 != uc; uc = (unsigned char)(uc >> 1) ) { if ( 0 != (uc & 0x01) ) { ++bit; } } return bit; }//bitcount //************************************************

  • 数値演算のアルゴリズム

    3Dの計算処理では、「正確性よりも速度を求める」という場合がよくあります(特にリアルタイム)。 そのあたりで使えそうな、数値演算のアルゴリズムをまとめてみました。 sqrt:平方根を求める C言語では"math.h"の「sqrt」で平方根を計算します。 これと同等の機能をするプログラムは以下のようになります。 浮動小数点での平方根の計算 double mySqrt(double x) { double s,last; if(x<=0.0) return 0.0; if (x > 1) s = x; else s = 1; do { last = s; s = (x / s + s) * 0.5; } while (s < last); return last; } 整数での平方根の計算 int myISqrt(int x) { int s, t; if (x <= 0) return 0;

    dotsarg
    dotsarg 2016/09/29
    平方根、距離計算、余り計算を高速に行う方法が記載されている。
  • 片山博文MZのOLDホームページ

    の 壮大なる目的のためだった 更新日時: 2025年07月01日 コンピュータ研究家、片山博文MZのホームページです。 自己紹介 | ソフトウェア | ReactOS | 掲示板 | GitHub | 止ブ | 合同会社イナホメゼル | 第三コロニー お知らせ:現在、止まんないブログへの移転を行っております。 Windowsソフトウェア ウィンドウズ用の便利なフリーソフトやシェアウェアを配布しています。 画像カラスンポ Pro ver.1.2 画像の上の名目上の寸法や角度を測定できるソフトです。 ※ 窓の杜に掲載されました。窓の杜様ありがとうございます。 クロスワード ギバー ver.5.2.8 「クロスワード ギバー」は、人工知能でクロスワード パズルを自動で作成するソフトです。 ※ Mr.PC 2020年11月号に掲載されました! Mr.PC編集部様ありがとうございます。 リソーエディ

  • 穴掘り法によるダンジョンの自動生成 (Unity2Dのサンプルコードつき) - Qiita

    はじめに ダンジョンの自動生成では、最もお手軽と思われる穴掘り法を解説します。 サンプル Unity2Dで実装したサンプルはこちらです。 http://2dgames.jp/unity/anahori/ プロジェクトファイルもついています。 メリットとデメリット メリット 穴掘り法によるダンジョンのメリットは以下のとおりです 実装が簡単 通路のどこに入り口と出口を置いても必ずつながる 袋小路が作られることがない 穴掘り法を使うメリットとしては「アルゴリズムが簡単」です。実装のためのプログラムコードとしては100行もかかりませんので、だいたい1時間もあれば実装できます。 また、通路がすべてつながっているので、通路内であれば入り口と出口をどこに置いても必ずつながります。 デメリット サンプルを確認するとわかるのですが、穴掘り法は「不思議なダンジョンシリーズ」のように、大きな空間を持った「部屋」

    穴掘り法によるダンジョンの自動生成 (Unity2Dのサンプルコードつき) - Qiita
  • Hotate’s Core

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

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

  • 第4回 図形のクリックを検出しよう─JavaScriptで外積の計算 | gihyo.jp

    以前gihyo.jpの特集で、Nゲージのエディタを取り上げたことがあります。このエディタでは、レールをドラッグ操作で動かせるようにしました。 レールの始点または終点から、x, y共に±3以内だったら端点と見なすことで、端点をドラッグすると変形になる処理が実現できます。これは簡単ですね。ifの条件で書くと ((sx - 4 < x)&&(x < sx + 4)&&(sy - 4 < y)&&(y < sy + 4)) のようになります。 では、レールの上をドラッグしたら移動になる、という処理はどう書けばよいでしょうか。レールは直線ですが、水平や垂直ではなく斜めにもなります。もちろん、1ドット幅を正確にクリックしないといけないのでは実用になりませんから、ある程度の幅を持たせる必要があります。高校で「点と直線の距離」を習った記憶がありますが、ルートが出てくるなど計算が複雑なため、たくさんの線があ

    第4回 図形のクリックを検出しよう─JavaScriptで外積の計算 | gihyo.jp
  • Visual Basic Library

    統計第四弾! Class Library に グラフプロット を追加しました。 グラフプロットを行うクラスです。まだコードも乱れていて未完成版ですが、 制御系でアナログ値をリアルタイム表示したいときなどに利用しやすいように作成しました。

  • 1