プログラミング

TT_IME Ver. 2.1

http://merom686.g1.xrea.com/soft.html←ダウンロードはこちら。手書き文字認識などのメニューを表示するオプションを追加した。Google Japan Blog: Google 日本語入力をアップデートしました

(インライン)アセンブラのお勉強

http://developer.intel.com/products/processor/manuals/index.htmInstruction Set Referenceに、AVXまでの命令が載っている。AVX2については→http://software.intel.com/file/36945最適化リファレンスマニュアルもあわせて読みたいところ。 http://www.int…

コンピュータ将棋、作る意味は何だろうか

自分で作るつもりになって、コンピュータ将棋関係のブログとかを漁ると、普段から見ていたはずの内容なのに、むちゃくちゃ濃密。ヤバい。たとえると、今まで「100mを12秒で走っていてすごいな」と思ってたのが、実は障害物競走(というか地面が泥)のタイム…

USI対応の思考エンジンを作ったときに遭遇したバグ

USIで使える将棋ソフトを作りたいと、ずっと思っていたが、ついに動いた。とりあえず、駒割とアルファベータのみ。最後にBonanzaと対戦させた棋譜を載せる。すごい水平線効果。その単純なプログラムを作るまでに遭遇したバグの全てをここに書く。 遭遇したバ…

プログラミングとCPU

プログラミングとはCPUの立場で考えることだと思っていた。機械語でCPUに伝えられることを前提に、Cなどの高級言語で書く。速度が要求されない場合は、もう少し書きやすい言語を使うこともある。 でも、これとは異なる考え方もある。Haskellとか最近よく見か…

将来の夢は、自分が作った将棋ソフトに負けることです

ここでいう「負ける」は比較的緩い意味で、こちらが意図的な手加減はせずに戦って一発入ればよしとする。この意味では、自作のオセロには10年以上前に負けているし、どうぶつしょうぎも去年負けることができた。 しかし、将棋は難敵だ。とにかく盤面が広くて…

ロジスティック写像の思い出

中学校の技術の時間、パソコンを使うことがあった。フロッピーを入れずに電源を入れると、N88-BASICが立ち上がる。 当時、自分のプログラミング環境はポケコン(PC-E650)のみ。比べればパソコンのほうが圧倒的に速く、画面のドット数もずっと多い。そこで、…

TT_IME更新 & ソース公開

ダウンロード→http://merom686.g1.xrea.com/soft.html自分が使ってない機能を削って、徹底的にソースコードを理解し直した。思っていたよりも単純なコードになった。継ぎ足し工事は本当によくない。ソース公開したので、誰か64bit版作ってくれると嬉しい。仕…

TT_IME Ver. 1.5

ダウンロードはhttp://merom686.g1.xrea.com/soft.htmlから。Google日本語入力が、いよいよ正式版になった。GoogleJapaneseInput-1.0.556.0久しぶりにTT_IMEの動作確認をしてみると、「TT_IME起動時にIMEを起動する」が半分しか働かなくなっていた。単にIME…

ビット演算まとめ

典型的な8bitの整数4つについて、各種ビット演算の結果を二進法で示す。 例1 例2 例3 例4 説明 b 01010000 10111011 00000000 11111111 元の数値 ~b 10101111 01000100 11111111 00000000 NOT, ビット反転 -b 10110000 01000101 00000000 00000001 NEG, 符号…

プログラミングという言葉の指すもの

http://webdesignrecipes.com/some-script-in-web-development-for-beginner/CとBASIC、どちらから覚えるべきか、みたいなのを想像してたら、全然違う内容でやんの。ウェブデザインか。 JavaScriptで動的にページを作るようなことはしたことがあるが、この記…

VC++で「つぶやく」までの流れ

liboauthというライブラリがあるらしいが、そういうのを使わずにやらなイカ。https://dev.twitter.com/docs/apiOAuth Core 1.0 準備(ここが難所) HTTPクライアント winsockプログラミング:GeekなぺーじここのHTTPクライアントの作成というところを見て(コ…

不可能ではないと思うが

oauth_signature (必須)上記パラメータ(oauth_consumer_key 〜 oauth_version)等を元に生成した文字列を、「アプリケーションの consumer secret(を URL エンコードしたもの)」を暗号鍵として HMAC-SHA1 方式で生成した署名を BASE64 エンコードしたもの htt…

b2u Ver. 1.3

ダウンロードはhttp://merom686.g1.xrea.com/soft.htmlから。変更点は、Unicode対応とbonanza.exe以外のファイル名に対応したこと。コンピュータ将棋スレに接待ボナがあるので使いたいが、177MBもあるfv.binをいくつも置きたくないので対応した。bonanza.exe…

波のシミュレーション

波のシミュレーションこういうのやると、やっぱりJavaScriptは遅いよなあ。でも、一応は動くのだから嬉しい。これの実行速度で、FirefoxはChromeにはっきり負けている。

32bitCPUで2^32未満の素数を列挙する

PentiumM-1.1GHzで148秒。タスクマネージャで見たメモリ使用量は144MB程度。 //2,3,5の倍数以外の整数 const unsigned long CPrime::p[] = {1, 7, 11, 13, 17, 19, 23, 29}; //逆引き const int CPrime::q[] = { 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 4, …

Canvas要素の座標

Canvasのarc()メソッドで、第6引数が"anticlockwise"という名前で説明されている。普段は時計回りに描画し、ここでtrueを指定すると反時計回りになる。これが気持ち悪い。 高校の数学に出てくるような普通の座標だと、「正の向き」は反時計回りだ。だから、…

for文の使い方

i = 0; for (;;){ if (i >= 8) break; p[i] = 0; i++; } このコードは、下のようにすっきりと書くことができる。if...breakの前に何もしていないというのが、この場合の形。 for (i = 0; i < 8; i++){ p[i] = 0; }

不毛な(?)一日

いい加減にC++で手軽に多倍長演算ができる環境を整えようと思っても、演算子オーバーロードのconstや書式の勉強にエネルギーを消費し、疲れたところへカラツバ除算とかぶつけられるとやる気なくす。 気分転換に書きやすいC#で分数電卓でも作ろうかと思ったが…

気軽に素因数分解

気軽に素因数分解本格的なのは難しくても、ちょっと123456789を素因数分解したいときとか用に素因数分解してくれる何かが欲しいと思っていた。こことかこことかこことか、よさそうなのはあるけど。まず、エラトステネスのふるいで素数を作る。1bitに1つの数…

b2u更新(Ver. 1.2)

b2u Ver.1.2コメントを受けての更新。結局、予測読みのときに評価値の符号を反転させる対症療法で対応した。Bonanzaの予測読みを使い、その読み筋を表示しようと思うと、どうしてもUSIの規約に反してしまうのだが、反しても仕方ないと思うことにした。 あと…

b2uの更新とu2bについて

(追記)u2bはバージョン2.1でBonanzaの予測読みに対応した。u2bは64bitボナンザに対応し動作実績もあるので、もはやb2uを使う意味はあまりない。名前が紛らわしくてすみません。b2uは、私が作ったソフト。u2bは、将棋ソフトのページにある、マイボナ作者さ…

どうぶつしょうぎ対戦ソフト制作感想

このゲームの面白さを知り、やる気が出てきたので、早く対戦できるようにすることを最優先に、どんなに弱くてもいいから作ることにした。局面を表示させるのに2時間、ルール無視で人対人ができるようになるまで1.5時間、思考ルーチンに3時間くらいをかけて、…

b2u更新

(追記2011/6/22)Bonanza 6.0では、「別の手機能」は使えなくなりました。 b2u Ver.1.1BonanzaをUSIプロトコル対応GUIで使う。変更点は以下。 「左右反転の局面を読ませる」を追加。時間制限なしの場合の定跡の扱いを変更。 「別の手機能」を検討モードでも…

encodeURIとencodeURIComponent

var s0 = "http://www.google.co.jp/search?q=将棋"; var s1 = encodeURI(s0); var s2 = encodeURIComponent(s0); //s1 : http://www.google.co.jp/search?q=%E5%B0%86%E6%A3%8B //s2 : http%3A%2F%2Fwww.google.co.jp%2Fsearch%3Fq%3D%E5%B0%86%E6%A3%8B "…

詰将棋のルールを更新

http://merom686.g1.xrea.com/tume.htmlルールの厳密な定義がされていないのは大問題だが、いくつかの文書と実例を読めば、数学的に自然な解釈というのが見えて、自分が大体納得できるくらいには理解できた。しかし、無駄合だけは難しい。理念のようなものは…

Consolasとの出会い

自分はどこでConsolasを知ったんだっけ?思い出した。C# によるプログラミング入門 | ++C++; // 未確認飛行 C、ここだ。このC#のサイトで、ソースコードを表示するのに使っているフォントがきれいで、何を使っているのかとソースを見たら、Consolasと書いて…

液晶のガンマ値を調べてみた

PCで色を扱うときに忘れてはならないのは、ガンマ値。rgb(80, 0, 0);の倍の明るさの赤色は、rgb(160, 0, 0);ではないのだ。ていうか忘れていた。なのでとりあえず自分の使っている液晶を調べてみた。おれディスクロージャー - 簡易ガンマ値チェッカところが…

SSE2でマンデルブロ集合

下のコードは、SSE2でマンデルブロ集合の計算をするもの。かなり高速に動作すると思う。このエントリでは、このコードの解説をするにょ。#うるりの物置きのMandel100.zipにあるSSEのコードが元になっている。 ; MASM 8.0 を使用 .686 .xmm .model flat, c .…

プログラミン

プログラミン | 文部科学省また何か来たよ。今度は文科省か。いい仕事をしている。以下、ポイントっぽいところを列挙。 命令は下から積んでいく。キー入力のウエイトが無限大固定なので工夫が必要。ヨブーンは別オブジェクトのハターンへも飛べる。ズットン…