プログラミング

C++の勉強中

特にオブジェクト指向あたり。動物に当てはめて振る舞いを見てみる。 動物クラスを継承した猫クラス、犬クラス、キリンクラスを作成。 動物は種族がある。 動物は鳴くが、一般的に鳴き声がわからない動物もいる(今回はキリン)。

TopCoder SRM487 div2 250

久々にTopCoderで解答が通ったのでネタもないし、書く。 でもRatingは落ちてとうとう600切った。 周りには800とか1200とかゴロゴロいるというのに・・・

ある文字列の文字を順番通りに含む文字列のマッチ

確かノイズ交じりの文字列から、ある一定の文字列郡を読み取るために作った。 一般用途では間違いなく需要が無い・・・

文字列置換の妄想、

ふと文字列置換の処理は重い処理じゃないかな、と思って、簡単に実装しようとした時に、 同じバッファ上のメモリコピーの面倒さに気づいた。 先人ならコレを解決する関数ぐらい作ってるだろう、と "mem"で始まる関数を辞書で探したら、memmoveが出てきた。 …

きゅーりくん向け getch

getchをlinuxでそこはかとなくやりたい向け

文字列が関数だ

#include <stdio.h> main(){ int x=100, y=200; char *func="\x55\x89\xE5\x83\xEC\x10\x8B\x45\x08\x8B\x00\x89\x45\xFC\x8B\x45\x0C\x8B\x10\x8B\x45\x08\x89\x10\x8B\x45\x0C\x8B\x55\xFC\x89\x10\xC9\xC3"; printf("x:%d, y:%d\n", x,y); ((void (*)(int*,int*))f</stdio.h>…

テンプレートとオーバーロードとconst char * 型

C++のお話。 テンプレートの特殊化ってのを使って、 テンプレートクラス内のテンプレートメンバ関数を特殊化しようとしたが、 どうやら出来ない模様。なんでや!! とりあえず、デフォルトの処理、ある型の場合は特別な処理、 という感じにわける事は出来る…

マージクソート

遅いマージソートです。

C言語でHashさせろ

汎用型ハッシュを書きました。 今なら糞コード付。

C言語でvectorさせろ

TopCoderをやってたら思いのほかvectorが使いやすかったんです。流石STLに含まれてるだけはあるな・・・ C言語でできないの?と思ってちまちまやってたんですが、非常に使い勝手が悪い形になってしまった。 でもvectorらしい、最後尾へpushしたり、添え字で…

TopCoder

http://www.topcoder.com/ TopCoderとは週1ぐらいに開かれるプログラミングの競技イベントです。 1週間ぐらい前から参加してますが楽しいです。 とりあえずやってみてkyuri君のほうが僕より腕があるのは確かということはわかった。 追いつけるように頑張らね…

つまらんネタ

new World();として満足していた人がいたようので、 そこはHello Worldだろ・・・と思い、こんなのを書いた。

CPUIDを叩く

インラインアセンブラを使ってCPUIDを叩く練習。 参考: http://download.intel.com/jp/developer/jpdoc/Processor_Identification_071405_i.pdf

16進数文字列をバイナリデータに変換する

最近、割と16進数文字列で表現されたデータに遭遇することが多くなったので、 perlでうんぬんやるのもいいんだけど、やってることは、2文字取り出して数値へ変換しているだけなんで、 C言語でも簡単にかけそうだな、と思ったわけです。 調べれば有用なソフト…

インクリメントの挙動

int i=0; i = i++ + ++i; というものを見つけまして、すぐにiに入る値が想像できなかったので、 こういうときは実際に実行してみれば判ると思い、普通にコードを書いた。 ちなみに、0+2が行われるので2が入ると予想してました。 追記 これは未定義な動作と教…

C++で参照をthrowしたらどうなるの?

どこかの呟きを見てたら、定数を参照を引数に持つ関数には渡せるけど、const型でなければコンパイルエラーになる。 だがthrowなら例外的に定数を投げても、const型でない参照でcatchしてくれる、というもの。

memcpyでコピー中にコピー先とコピー元の領域がかぶる場合はどうなるの?

未定義です。 コピーの仕方に原因があります。

INC命令とADD命令の速さ

どこかのつぶやきから kyuridenamida ++++iとi+=2;ってどっちが速いんですか 聞く暇あんならベンチマークとりゃれdしあいsdじょじおfsl;

C言語でハッシュテーブルを実装してみた

ちょっと理解できたかも記念ぱぴこ。リア充は市ね。 参考にならない程度のコードもつけときます。

UDP使用時に送信元のIPアドレスとポート番号を取得する。

TCPなら1度接続が確立すれば、別の通信ポートを確保するなどをしない限りは、送信元を意識しなくてもいいが、 UDPでは1つのソケットでやり取りしなければならないので、1ソケットにつき1つの送信元情報しか持つことは出来ない。 なのでrecvとsendだけなら、…

C++ 文字列リテラルとvoid *型とコンパイラ

VC++2008では文字列リテラルのアドレスをvoid *に暗黙の内に変換し渡すことができるけど、 GCC4.4.0ではエラーになったので、簡単にメモ。 何でこんな事になったというと、汎用型みたいな感じで、こんなクラスを作ってみたことから。

C++でスレッドを使ってみた

Perlで少し触れた程度の知識しかないけど、C++でスレッドを使ってみた。 Perlのthreadsライクな呼び出し方ができればいいなーとか思ったけど、 可変長引数の問題があったことを忘れてた。 そもそもC++自体よくわからんちん。 なので今回は簡単にスレッドを使…

再帰関数と最適化

最大公約数を求める方法に再帰を用いるやりかたがありますが、 別にこれぐらいならwhileでループするやり方でもできるわけで、 関数を呼び出すオーバーヘッドを考えれば、whileのほうが早いんじゃないの? と思って、コンパイルしてみたら、あんまり差がなか…

SHA-1

MD5もやったしついでにSHA-1もやるか、という夢を見て起きたので、 起きてすぐ作業に入って、1時間ぐらいで作成。 MD5作ったときは12時間ぐらいかかったのにね。*1 SHA1とMD5はMD4の派生なので、MD5と非常に似てる。 計算部分と、最後のパディング以外はほと…

MD5

いまさらだけどC言語でMD5アルゴリズムを実装してみた。 参考 The MD5 Message-Digest Algorithm セキュリティ関連 RFC:IPA 独立行政法人 情報処理推進機構 IPAが公開しているRFCの日本語訳は英語ができない僕には参考になります。 MD5だけでなく、ほかにも…

C言語の構造体のキャスト

型変換ネタ

暗号化その3

暗号化その2 http://d.hatena.ne.jp/ryousanngata/20100603/1275586104 の、続き。

暗号化その2

前 S-DES http://d.hatena.ne.jp/ryousanngata/20100528/1275060540 S-DESを遊びで実装しましたが、暗号化は8bit単位で行われるので、 "aaaa"と同じ文字が続くと、出力も同じ結果になります。 このままでは英文を暗号化しても、暗号文を盗まれてしまえば、 8…

S-DES

暗号化技術のDESについて調べたところ、簡単に実装できるS-DESなるものを発見。 "S-DES 暗号"とでも検索すればいくらでもhitします。 以下ソースコードとか

fmod

実数演算の落とし穴。 とあるblogを見て、ある問題の原因がすぐわからなくて調べたことから。 C言語のmath.hに付属するfmod関数があります。 これは小数点以下の余りを算出するときに使えます。 しかし常に期待した結果とは限りません。