program

CodeIQで結城先生が出題されたCrossingが神がかっていた件

CodeIQで挑戦者数が400人超えという異例の事態になったCrossingとはどんな問題だったのか。twitterでも恐ろしい勢いで拡散され、最終日に100人を超えるチャレンジがあった、この問題。一体どこにそんな魅力があったのかについて考えてみる。 まず、このよう…

CODE VS 2.1が大変なことになっている件

「CODE VS 2.1予選問題は悪問ではないか」(→ http://d.hatena.ne.jp/yaneurao/20130625 )において、「せめて決勝に進んだら交通費と宿泊代ぐらい出して欲しい。」とぼやき半分で書いたのだが、中の人が真夜中のテンションで突然こんなことを言い出した。 な…

CODE VS 2.1予選問題は悪問ではないか

プログラム系のサイトを巡回している人ならばうざいぐらいにバナー広告が出てきていて、当然ご存知だとは思うのだけども、いまCODE VS 2.1というプログラマ世界一決定戦というプログラミング競技が開催されている。 CODE VS 2.1公式 http://codevswc.jp/jpn/…

古くて新しい自動迷路生成アルゴリズム

最近、ゲーム界隈ではプロシージャルテクスチャー生成だとか、プロシージャルマップ生成だとか、手続き的にゲーム上で必要なデータを生成してしまおうというのが流行りであるが、その起源はどこにあるのだろうか。 メガデモでは初期のころから少ないデータで…

ピアノの運指を自動生成するには?

一般的に言ってピアノの初見能力は訓練次第でかなりのスピードにまで向上する。一つの音符を1つの文字だと考えてみると想像しやすい。文字を読む速度は子供のころは遅いが、大人になるころには1分間に1000文字ぐらい読めるようになっているはずで、ピアノを1…

多次元メモリ空間プログラミング

新年会で酒を飲み過ぎて頭が痛くて眠れないので、新年の挨拶代わりにプログラミングの話でも適当に書き散らしておく。 以前、私の知り合いのラノベ作家である土屋つかささんが、「プログラミングのソースコードって本当に1次元(plain text)でいいんですかね…

スーパープログラマーへの道がいまごろはてブされまくっている件

最近知ったのだが、10年ぐらい前に書き散らした、私の黒歴史(?)とも言うべき、「スーパープログラマーへの道」がいまごろになってはてなブックマークされまくっているのだ。(現在、430users) http://b.hatena.ne.jp/entry/bm98.yaneu.com/rsp/loglist.html 1…

ExcelでA1セルにIDとか書いてはいけない件

アカウントをCSV形式のファイルで管理したいときにA1セルに"ID",B1セルに"PASSWORD"などと列名を書いておくことはよくあると思うのだけど、A1セルに"ID"と書かれているとExcelで開いたときに「SYLK:ファイル形式が正しくありません。」というエラーメッセー…

人間に勝つコンピュータ将棋の作り方

「人間に勝つコンピュータ将棋の作り方」(asin:4774153265)のほう、ようやく読み終わった。 この本は読み物の側面が強いのだが、習甦がどんな評価関数にしているか詳しく書いてあったりして、コンピューター将棋開発者にとっても他にはない貴重な資料だと思…

コンピュータ囲碁 ―モンテカルロ法の理論と実践

amazonで予約しておいた「コンピュータ囲碁 ―モンテカルロ法の理論と実践」(asin:4320123271)が今日届いた。 モンテカルロ法について、理論を美添 一樹氏、実践を山下 宏氏(囲碁プログラム彩の作者)が担当。 コンピューター囲碁のアルゴリズムとしては2012年…

世界で闘うプログラミング力を鍛える150問

「世界で闘うプログラミング力を鍛える150問」(asin:4839942390)の翻訳を担当したOzyさんから献本していただいた。(Ozyさんのサイン入り!) 「プログラミングコンテストチャレンジブック」(asin:4839941068)の著者の人たちが監訳のようだ。 内容は、Google・…

クロージャーだと苦労するんじゃ?(ダジャレ)

closureで継続(continuation)を実現する技法ってあるじゃないですか。 例えば次の記事は私が5年以上前に書いてますね。 C#2.0時代のゲームプログラミング(49) 〜 delegateを用いたcontinuation http://d.hatena.ne.jp/yaneurao/20070207 上の技法は私は10年…

enchant.js ――― パソコン少年の見た夢

景気には波があると言われている。約10年周期のジュグラーの波、約20年周期のクズネッツの波、約50年周期のコンドラチェフの波。 パソコンの言語ブームには25年周期というのがあるのではないかと私は思う。パソコン少年も25年ぐらい経つと会社経営者になって…

プログラマー3X歳定年説の崩壊

Windows8発売日が今月26日らしいが、その日は私の40歳の誕生日である。 私が二十歳ぐらいのころ「プログラマー3X歳定年説」というのがあって、「ああ、30には引退なんだな」とか思っていたが、30になっても私のプログラミング能力は衰えるところを知らず、「…

定期的に繰り返し実行する簡単ではないお仕事

いやー、この問題は本当に難しい。難しすぎて、どうやって解決すればいいかいまだによくわからない。わからないので、ここに書いてみる。 最初、とあるお客さんのために「ひよこの餌やりプログラム(仮)」を作っていたんだ。開始ボタンを押すとひよこの餌が出…

ネガマックスの説明がどこもおかしい件

αβ探索は簡単なコードではあるが直感的には理解しづらい。熟練したプログラマでも慣れていなければ理解しにくい。 「αβ探索ってなんぞや?」って言う人はこの時点でブラウザを閉じてお戻りください。ここから先に腹がよじれるような面白いことは何一つ書いて…

 thenブロックの中括弧の省略について

いま、2chの某スレでC/C++やJavaのifのthenブロックで中括弧を省略したほうがいいのかどうかについての議論が繰り広げられていて、面白そうだったので取り上げてみる。*1 要は、次の書き方は中括弧を省略したほうがいいのか? if (xxx) { continue; } という…

Python による日本語自然言語処理

長らく紹介するのを忘れていたのですが、Natural Language Processing with Python (Python による日本語自然言語処理)の訳本が出ました。入門 自然言語処理です。 原著のタイトルにはPythonとありますが、Pythonで書かれてはいますがアルゴリズムを理解する…

読み方がおかしすぎる

「最近、関数型言語が流行ってんだってね?」 私にそう言ったのは、大法螺吹きの異名で名高い営業マン。 もちろん、彼はプログラミングのことは全然知らない。 たぶん関数型言語のこともどっかのポルノ雑誌ででも読んだのだろう。やれやれだ。 「岡村っての…

線形代数の教科書は1円で買えるという話

昨日の記事に対して、↓のようなお叱りのコメントを頂戴した。 sam 2010/12/05 00:26 なにやら揶揄されていますが、管理人さんが「お腹いっぱい」でも、それらの分野の初学者もいるわけですし、総花的なのが必ずしも悪いとは私は思えません。そこを批判するな…

ゲームエンジン・アーキテクチャ

『アンチャーテッド 黄金刀と消えた旅団』を開発したゲームプログラマの著書、ゲームエンジン・アーキテクチャが発売になっちょります。 「ゲームプログラマになる前に覚えておきたい技術」と対比させて言うなら、こちらは「ゲームプログラマになったあとに…

終わらないカウントダウン

先日の「清水市代女流王将vs.あから2010」のときに駒桜のサイトを見ると↓こうなっていた。 あれ?当日のはずなのにどうして「1日と23:45:47」あるのかなぁと思っていたら、よく見たら日にちがマイナス。 「こんなのプログラム書いたときに最初にチェックする…

美しすぎるプログラムの解説

↓で紹介した美しすぎるプログラムの解説を少し書いておく。 美しすぎるプログラムを解読せよの巻 http://d.hatena.ne.jp/yaneurao/20101013 配列dpの意味だが、 dp[r][i0][i1][i2][i3][i4][i5][i6][i7][i8][i9] は、r桁の数字において、10進数で各桁を見たと…

美しすぎるプログラムを解読せよの巻

#include <iostream> #include <cstring> using namespace std; long long dp[18][4][4][4][4][4][4][4][4][4][4]; #define FORN( n ) for ( int i##n = 0; i##n < 4; i##n ++ ) int main() { memset( dp, 0, sizeof( dp ) ); FORN( 0 ) FORN( 1 ) FORN( 2 ) FORN( 3 ) FORN( 4 </cstring></iostream>…

3回に1回出力するだけの簡単ではないお仕事

なんかさ、3回に1回出力するだけの簡単なプログラムのお仕事ってあるじゃん。 if ( (++counter % 3) == 0) printf("Fizz\n"); これって意外と難しいんだよね。 ……なんてことを言うと「おいおい、天下のやねうらお、ついに頭おかしくなったか」とか言われるだ…

Borland C++

https://twitter.com/Cryolite/status/26084067723 私が最初に会った時の名前はTurbo C++だったな。1993年だったかな。コンパイルがすこぶる速く、私は持ち運び用のMS-DOSが立ち上がるラップトップ機に入れて使ってた。 Turbo C++だとHello worldのコンパイ…

コンストラクタでの例外はあり?なし?

コンストラクタでの例外はあり?なし? http://togetter.com/li/54761 私の昨日の記事が発端でなんか興味深い議論になっている模様。 以下、twitterでは文字数的に書ききれないことをだらだらと。 二段階初期化(コンストラクタとは別に初期化関数を呼んでオ…

われわれは100倍、速く書けない

西川 ええと……(笑)。受注生産って、人数に比例してもうけるじゃないですか。でも、われわれは人の100倍は速く書けると思っている。じゃあ、その人に1カ月、その分を払ってくれるのかというと、受注じゃ絶対、無理でしょう。でも、ソフトウェアだと可能。 (…

プログラミングコンテストチャレンジブック

プログラミングコンテストチャレンジブックが、本日発売らしい。 MYCOM公式の紹介ページ http://book.mycom.co.jp/book/978-4-8399-3199-5/978-4-8399-3199-5.shtml 本書は著者陣が多くのプログラミングコンテストに参加し、練習や勉強を重ねて得た、さまざ…

iPhone/iPadゲーム開発ガイド

iPhone/iPadゲーム開発ガイド ―Objective-Cで作る2D/3Dゲームもオライリーの編集の方にいただきました。 著者はPaul Zirkle氏は米Konami勤務、Joe Hogue氏は米EA勤務だそうです。内容のほとんどが2D、3Dの簡単なゲームエンジンについての記述ですが…これは別…