タグ

ブックマーク / yaneurao.hatenadiary.com (23)

  • ネガマックスの説明がどこもおかしい件 - やねうらおブログ(移転しました)

    αβ探索は簡単なコードではあるが直感的には理解しづらい。熟練したプログラマでも慣れていなければ理解しにくい。 「αβ探索ってなんぞや?」って言う人はこの時点でブラウザを閉じてお戻りください。ここから先に腹がよじれるような面白いことは何一つ書いてませんので。 さて、αβ探索が理解できないならMinMax法から勉強しなおすべきで、MinMax法の基的なコードが次のコードである。 「ミニマックス法」(Wikipedia) http://ja.wikipedia.org/wiki/%E3%83%9F%E3%83%8B%E3%83%9E%E3%83%83%E3%82%AF%E3%82%B9%E6%B3%95 上のMinMax法のコードは自分は局面評価が最大になるものを選び、相手は局面評価が最小になるものを選ぶ。簡単明瞭なコードである。つまり、ここで言う局面評価関数(上記コードの STATIC_VA

    ネガマックスの説明がどこもおかしい件 - やねうらおブログ(移転しました)
  • やねうら王のPVの件 - やねうらおブログ(移転しました)

    ※ 今日の電王戦第二局のPVについてのコメントは今日のコメント欄にどうぞ。 (他の記事にコメントされてもそれは削除させていただきます) ※ はてなダイアリーでは1つの記事に対するコメント数の上限があるので今日のコメント欄が書けなくなったなら、明日(以下)のコメント欄をお使いください。 http://d.hatena.ne.jp/yaneurao/20140315#p1 電王戦第2局「やねうら王」の修正対応について http://blog.nicovideo.jp/niconews/ni045018.html 昨日、ドワンゴの川上会長から私の携帯に直電があって(そのときは私は寝ていたので、連絡がついたのは今日の昼なのですが)、「電王戦第二局のPVの件ですが、佐藤紳哉六段がそのなかで非常に怒っておりまして、たぶんやねうらおさんがご覧になったら気分を悪くされると思うのですが」ということでした。

    やねうら王のPVの件 - やねうらおブログ(移転しました)
  • やねうらお−俺のブログがこんなによっちゃんイカなわけがない

    紙媒体のほうの拙著『解析魔法少女美咲ちゃん マジカル・オープン!』は一度絶版になったんだ。自分で言うのも何だが、リバースアセンブルの名著であり、教科書的な存在であるから、アマゾンのマーケットプレイスでは長らく定価の数倍というプレミア価格となっていた。 プレミア価格になってからも「再販しないんですか?」とブログの読者の方などから問い合わせを数多くいただき、これは再販すべきだよなぁと思って出版社のほうに増刷するか、無料でPDFか何かを公開させてもらえないかと何度か出版社の編集担当に交渉したのだが、これがどうもうまくいかなかった。 まず、文の著作権自体は著者(私)にある。だから絶版になったあと文だけを公開することは出来る。しかし図は、下書きは私が書いたものではあるが、出版社の編集側で手直ししたものがには使われているし、組版をしたのは出版社である。これらに関する権利が出版社にある。また、表紙

    やねうらお−俺のブログがこんなによっちゃんイカなわけがない
  • 世間ではプログラマが足りていないらしい - やねうらおブログ(移転しました)

    最近、私のまわりの会社は求人難だと言う。まともなスキルをもっている人は給料の高い会社(いまならソーシャルゲーム系か)に転職してしまうので、もはや求人市場にはカスしか残っていないとその経営者たちは言う。 毎日、毎日、何十人も面接するが、とんでもないレベルの奴らが大挙して押し寄せてくる。プログラミング歴2年とか3年ぐらいの奴ら。純粋にプログラミングの勉強に費やした時間数で言うと500時間とか1000時間とかその程度の。ピアノで言ったらバイエルすら終わってないレベル。そんな奴らがほとんどだと彼らは言う。 ピアノのリサイタルで金取って演奏するのに、バイエルレベルの奴が来たらブーイングの嵐で金返せーって誰でも思うだろう。しかし、IT業界に至っては最近は開発環境が整っているので生産性が高く、そのレベルの人たちでも出来る仕事がなくもない。だからそんな無茶苦茶がまかり通っているのだ。 私は先日、CODE

    世間ではプログラマが足りていないらしい - やねうらおブログ(移転しました)
  • 古くて新しい自動迷路生成アルゴリズム - やねうらおブログ(移転しました)

    最近、ゲーム界隈ではプロシージャルテクスチャー生成だとか、プロシージャルマップ生成だとか、手続き的にゲーム上で必要なデータを生成してしまおうというのが流行りであるが、その起源はどこにあるのだろうか。 メガデモでは初期のころから少ないデータでなるべくど派手な演出をするためにプロシージャルな生成は活用されてきたが、ゲームの世界でプロシージャル生成が初めて導入されたのは、もしかするとドルアーガの塔(1984年/ナムコ)の迷路の自動生成かも知れない。 なぜ私が迷路のことを突然思い出したのかと言うと、最近、Twitterで「30年前、父が7年と数ヶ月の歳月をかけて描いたA1サイズの迷路を、誰かゴールさせませんか。」というツイートが話題になっていたからである。 この迷路を見て「ああ、俺様も迷路のことを書かねば!俺様しか知らない(?)自動迷路生成のことを後世に書き残さねば!」と誰も求めちゃいない使命感が

    古くて新しい自動迷路生成アルゴリズム - やねうらおブログ(移転しました)
  • 多変量解析,モンテカルロ法 - やねうらおブログ(移転しました)

    やばいですよ、やばい。すごいやばいですよ。 3Dやるのに行列と4元数ぐらい知ってればポリゴンぐらい動かせるだろとか 思ってる人もいるだろうけど、そんな甘くもないんですよ。 まず最初に、ポリゴンの頂点を球とかボックスとかでフィッティングする 作業が必要になるんです。axis-alignedなボックス(AABB)でいいやーとか、 そんなこと言うなまいきな子はお尻ぺんぺんですよと。*1 それで、フィッティングを少し真面目にやろうと思ったらとりあえずは 共分散行列と最小二乗法とか必要になって。最小二乗法って二乗したやつ 最小化する係数を決定しないといけない。 すこし凝った図形でフィッティングしようと思うと、二乗したやつ最小化 するだけでひと苦労。最小値求めるのにベクトルでの微分とか出てきて 「あーベクトル解析とか多変量解析とかもう少し真面目に勉強しとけば よかったなー」とか考えたりして全然はかどら

    多変量解析,モンテカルロ法 - やねうらおブログ(移転しました)
  • 降順insertion sortについて - やねうらおブログ(移転しました)

    昨日の記事で、世間で広く知られているinsertion sortのコードがいかにひどいかについて書いた。 私の提案したコードをWikipediaにも掲載(注記としてだろう)したほうがいいのではという意見をいくつか頂戴した。 Yuichirou 2009/11/26 02:03 私はyaneuraoさんのコードの方が可読性にも優れていると思います。むしろ日語版Wikipediaのコードは脱出条件が複雑な内側のループを無理にfor文で書いているため、可読性が落ちています。 yaneuraoさん、ぜひその最後のコードをWikipediaに掲載すべきだと思いますがいかがでしょうか。 上のYuichirouさんの意見は好意からだろうが、はてブでは、次のような否定的な意見も見られる。 shuji_w6e 「馬鹿すぎる」とか「駄目すぎる」とか何様なんだろ?調べて回ったついでに全部書き換えてくればいいの

    降順insertion sortについて - やねうらおブログ(移転しました)
  • 広く知られているinsertion sortのコードは駄目すぎる - やねうらお−よっちゃんイカを食べながら年収1億円稼げる(かも知れない)仕事術

    insertion sortは「挿入ソート」と訳される。(Wikipedia→ http://ja.wikipedia.org/wiki/%E6%8C%BF%E5%85%A5%E3%82%BD%E3%83%BC%E3%83%88 ) ■ 日語版 Wikipediaの日語のページのコードを引用すると次のようになっている。 for (i = 1; i < n; i++) { tmp = data[i]; for (j = i; j > 0 && data[j-1] > tmp; j--) { data[j] = data[j-1]; } data[j] = tmp; }上のコードでは、内側のループでinsertの必要がなかった場合でも最後にdata[j] = tmpでtmp変数をwrite backしており、しかも、insertの必要のなかった場合でもj=iが1回実行される。それらの意味に

    広く知られているinsertion sortのコードは駄目すぎる - やねうらお−よっちゃんイカを食べながら年収1億円稼げる(かも知れない)仕事術
  • MTJさん、逝去される - やねうらおブログ(移転しました)

    バブルボブル、レインボーアイランド、ハレーズコメット、ヴォルフィード、サイバリオンなどTAITOのゲームデザインを担当した、MTJこと三辻富貴朗さんが昨年の12月11日に亡くなられたとの事です。腎臓疾患から胸水がたまり、心肺停止の状態となり、意識不明が続いた末の逝去だそうです。 MTJさんが逝去されたそうです(更新を怠る日々) http://www.usamimi.info/~mnn/d/?p=10361 バブルボブルやレインボーアイランドは狂ったようにプレイしていたので、とても懐かしい。バブルボブルには、タイトル画面で入力できるコマンドが3種類あって、その一つを入力したときにコピーチェックが行なわれる。 このコピーチェックに引っかかった海賊版だと、そこで、クレジットが255になるものがあると知り合いに教えてもらったが、私はそのような海賊版に出会うことはなかった。(電源投入時からSuper

    MTJさん、逝去される - やねうらおブログ(移転しました)
    agw
    agw 2009/02/13
  • K君の学習メソッド - やねうらおブログ(移転しました)

    どこでもありがちだと思うが、私は大学のときに、クラスメイトと麻雀をしようということになった。なかには小学校のときから麻雀をやっているクラスメイトが居て、彼らと麻雀話で大いに盛り上がったのだが、どうしたものか肝心のメンツが足りない。 そこで身近にいる誰かに麻雀を覚えさせて、メンツを増強しようということになった。それに選ばれたのが私と親しくしていたK君だった。K君は新しいことに取り組むのが大好きで、K君はルールを覚えるとたちまち麻雀の虜となり、麻雀の入門書をいくつも買って、そのあとプレステの麻雀ソフトを購入し、しばらく学校にも来ずに、ひたすら麻雀の研究をしていた。 K君が麻雀を覚えて1ヶ月後、実際に全員で麻雀の対局をすることになった。K君と対局するのはこれが初めてだ。そもそもK君は麻雀牌を触ったことすら無かった。K君は洗牌(シーパイ)(各局の開始時に、まず使用する牌をすべて裏向きに伏せてかきま

    K君の学習メソッド - やねうらおブログ(移転しました)
    agw
    agw 2009/02/13
  • Bonanzaのソースが公開された! - やねうらおブログ(移転しました)

    ■ Bonanzaのソースが公開された ついにBonanzaのソースが公開された。パラメータを学習させる部分は無いが、思考部はまるごと公開されている。 19回コンピュータ将棋選手権使用可能ライブラリ http://www.computer-shogi.org/library/ ■ Bonanzaのソースの内容は? 1時間ほどかけてざっとソースを読んでみたが、ソースはCで書かれており(C++ではなく)、C++templateを駆使したGPS将棋のソースとは対照的。GPS将棋のソースに比べれば格段に読みやすく、かつ、素人くさい。率直かつ正直に言わせてもらえれば、GPS将棋のソースのほうが何倍も参考になる。 ただ、Bonanzaのソースの ・どんな評価因子を採用しているのか ・ビット演算のテクニック は注目に値すると思う。あとは、GPS将棋に比べてソースが簡素なので将棋プログラムの思考部の書き

    Bonanzaのソースが公開された! - やねうらおブログ(移転しました)
  • やねうらお―よっちゃんイカは買ってもレニエのお菓子は買わない男 - アタック25必勝陣形について

    3月25日放送分のアタック25で以下のような陣形になった。 □□■□□ □□■□□ ■■■■■ □□■□□ □□■□□ (■は緑、□は空き) 以下、イノセンスさんによる解説文。 まだ角を取る戦いが始まってないので勝負はここからのように思えるが、4人の解答者全員が自分にとって最も有益な行動を取った場合、なんとこの時点で緑の勝ちが確定する。この特殊な陣形を、私は「グランドクロス」と名づけた。 まず、アタック25の公式ルールによると、自分が引っくり返せるパネルがないときに正解したら、次に引っくり返せるパネルができるような位置を取らなければならない。 よって、グランドクロスの状況で緑以外の誰かが正解しても角にいきなり飛び込むことはできず、緑のパネルに隣接したどこかを取ることになる。ここでそのような取り方をしてしまうと、取った人以外の3人は次から角を取ることができるようになるにもかかわらず、取った

    やねうらお―よっちゃんイカは買ってもレニエのお菓子は買わない男 - アタック25必勝陣形について
  • C#2.0時代のゲームプログラミング(30) - やねうらおブログ(移転しました)

    ■ 何故このようなdelegateの実装になっているのか? わざわざこんな複雑な実装にするメリットがどこにあるのだろう? Visual Studio 2005の開発に従事しているAbhinaba氏のblogにはC#の匿名メソッドはclosureではないという記事があるが、この記事のその後の議論では「匿名メソッドはまさにlexical closureである」という結論に落ち着いている。 Fortran(すまん。不勉強なのでFortran77時代しか知らない。)のように関数の呼び出しのときのパラメータが参照で渡されたところで、必要なら関数体の先頭でローカル変数にコピーしてそちらを使えばいい話だし、同様に、delegateがこのような実装になっていようが、必要なら匿名delegateの直前で別の変数にコピーして、その変数をdelegateのなかで参照すれば良い。この意味において、closure

    C#2.0時代のゲームプログラミング(30) - やねうらおブログ(移転しました)
  • C#2.0時代のゲームプログラミング(29) - やねうらおブログ(移転しました)

    ■ delegateの実装的な観点から intのような値型はstack上に確保されるのではなかったのか?intが当にstack上に確保されているのならば、delegateの中からそのstack上の値をポイントしていると、この関数から抜けてstackが巻き戻されてしまったときにそのようなポインタは不正なポインタになってしまわないのだろうか?どうやって実装しているのだろう? 簡単に言ってしまえば、上のようなdelegateのなかでstack上の変数を参照した場合、その変数をstack上に配置するのではなく、最初からheap上に配置するような実装になっている、ということである。 そして、deleagteのなかでは、そのheap上の変数を指すようになっている。だから、先ほどのプログラムの結果は2になる。(参考として id:NyaRuRu:20051029 を挙げておく。) 001 TestDel

    C#2.0時代のゲームプログラミング(29) - やねうらおブログ(移転しました)
  • C#2.0時代のゲームプログラミング(28) - やねうらおブログ(移転しました)

    C#のdelegateは、嫌らしさ抜群である。 001 class Program 002 { 003 public delegate void TestDelegate(); 004 005 static void Main(string[] args) 006 { 007 int i = 1; 008 TestDelegate d = delegate 009 { 010 Console.WriteLine(i.ToString()); 011 }; 012 i = 2; 013 d(); // 2が表示される 014 } 015 } 016 私はこの結果を最初に見たとき「何故1ではなく2が表示されるのだろう?」と思った。疑問は二つあって、ひとつは、「どうやって実装しているのか」という意味であり、もう一つは、「何故このような実装になっているのか」ということである。(つづく)

    C#2.0時代のゲームプログラミング(28) - やねうらおブログ(移転しました)
  • ピタゴラスイッチ - やねうらおブログ(移転しました)

    ピタゴラスイッチに出てくるピタゴラそうちが凄いんだ。*1 ピタゴラスイッチは、アルゴリズム行進が好きだったんでときどき見てたのだけど、こうして通してみたのは初めてだ。 ホンダのaccordのCMや、TVチャンピオンの動画もため息が出る。 *1:「ピタゴラそうち」は俗に「インクレディブル・マシーン」と呼ばれるゲームに由来する。昔のゲームだが、エミュレータで動くようなので遊んでみてはどうだろう?→http://ist.oops.jp/tim/

    ピタゴラスイッチ - やねうらおブログ(移転しました)
  • 馬鹿の見る夢のなかには馬鹿しか出てこない

    うちの会社でときどき仕事を外注の人にお願いすることがある。あるいは、うちの会社でしばらく働いてもらうことがある。そうすると、そういう人たちは「ああ、世間の職業プログラマは、こんなレベルで、こんな質の悪いコードを書いてやがるんだな」という局面に出くわすこともあるだろう。 「こんな奴でもっていけるんだ」とか「世間のレベルとはこんなものなのか」みたいに一般化して認識する。下手すると自分のblogで「こんなコード許されていいのか」だとか「こいつバカス」とか愚痴を書いてやがる。「ほげほげテクノロジーを使いこなすのは、世間の職業プログラマには無理だろう」だとか書いてやがる。そんなの勘違いも甚だしいと思うんですよ。 あのね。仕事というのは、相手の実力の30〜40%で出来るものを与えるのが正しいマネージメントなのです。相手の力の80%〜120%を出さないと達成出来ないような仕事というのは、その人にお願い

    馬鹿の見る夢のなかには馬鹿しか出てこない
  • C#2.0時代のゲームプログラミング(26) - やねうらおブログ(移転しました)

    前回書いた、Marshal.UnsafeAddrOfPinnedArrayElementはハマりどころで、日語の.NET Framework SDKの訳文が間違っていることもあって、必ずと言っていいほどハマる。 例えば、C#からOpenGLを扱うのは一筋縄ではいかないことをこの連載で示してきたが、誰かがひとたび礎を築きさえすれば、比較的容易にC# + OpenGL + NeHeなんてことも出来る。 id:Ozy:20060408 id:Ozy:20060409 id:Ozy:20060410 私はいつも『Joel on Software』の一節を思い出す。 つまり、あなたが日常使うことの90%は1週間で学習できるが、残りの10%を知るためには2、3年かかるかもしれないということだ。「やってほしいことがあれば何でも、を見つけてやり方を覚えるよ」と言う人たちに対して、当に深い経験を持った

    C#2.0時代のゲームプログラミング(26) - やねうらおブログ(移転しました)
  • 天と地 - やねうらおブログ(移転しました)

    同じぐらいの能力を持った二人に同じことをさせても、そのあと伸びるか伸びないかというのは、人の性格や人が物事をどう捉えているのかによるところが大きい。仕事を“やらされている”と思っている人と、仕事に意義を見出している人とでは全くそのあとの成長ぶりが違うし、少しでもいい成果を出そうと考えている人と、楽して場あたり的に仕事をこなそうとする人とでもその後の人生は雲泥の差と言えるだろう。 「無学歴、無職歴、無実力のニート年収500万円の正社員になる方法」という記事がいいこと言ってるなと思った。

    天と地 - やねうらおブログ(移転しました)
    agw
    agw 2006/03/11
  • やねう企画2005年入社問題解答と解説(5) - やねうらおブログ(移転しました)

    id:yaneurao:20050929 2005年度やねう企画入社問題。 id:yaneurao:20051006 解答解説(1) id:yaneurao:20051007 解答解説(2) id:yaneurao:20051008 解答解説(3) id:yaneurao:20051025 解答解説(4) 続き書くの、すっかり忘れてた(゚Д゚) そんなわけで、解答貼り付け。

    やねう企画2005年入社問題解答と解説(5) - やねうらおブログ(移転しました)