2009-01-01から1年間の記事一覧

後戻り防止と双方向探索

後戻り防止の効果 1ステップ毎の後者を1つ排除できる。ステップ数が多くなるほど効果が大きくなる。後者が少ないときに特に効果的。 例: 後者数 状態空間 倍率 2^8 256 − 3^8 6561 25.6 4^8 65536 10.0 5^8 390625 6.0 双方向探索の効果 ステップ数を最大で…

15パズル

折角問題が生成できるようになったので遊べるようにしてみた。↓かnetinstallerからDLできる。 ■15パズルのパッケージ 特に目新しいものでもないけど、emacsカーソル移動の練習には向いてるかも。ちなみに、私は矢印キーを使う。 それと手抜き感いっぱいの作…

3.4 8パズルの解の存在

昨日の続き。また、同内容の問が3.4にあったりする。 15パズル - Wikipediaの「不可能な配置」の項目にあるように、「14 と 15 を入れ替えた状態」は解が存在しないパターンである。このように、任意の隣り合うピースを奇数回入れ替えると解なしとなり、一方…

3.10 8パズルと2つの後者関数

今回は完全な探索関数の作成ではなく、2種類の後者関数を実装して比較する課題である。作るのは 状態をコピーし、それを修正することで一度にすべての後者を生成するもの 呼び出されるたびに状態を直接修正することで逐次後者を生成するもの の2種類だ。8パ…

3.9 宣教師と人食い人種問題

面倒になってきたのでコーディング部分だけまとめることにした。掃除機問題のバリエーションはいまいちなので見送り。 次は順に考えるのが面倒くさいことで有名な宣教師問題である。色々な資料を見ると細かいバリエーションがあるのがわかるが、今回はもっと…

2.7 掃除機問題(1)

サンプルコード見たらdefstructureとか使ってて泣いた。まあ、common lispなら標準だし、CLISPでも使えばいいんだけど。。サンプルコードはさっくり無視して、道をつくる - xyzzysims制作中 - 人工知能一般で作ったコードを流用することにしよう。それまでに…

リストの破壊的操作をする

10分でコーディング x 2 〜リストの破壊的操作篇〜 - 'T - cadr group これだ。お題を出されたので解いてみよう。似たような問題をOn Lispで見た気がするなあ。相変わらず記事別に見てる人には意味ないけど、解答は続き。

久しぶりに練習問題を解く

問題文はテキスト参照で。ちなみに、テキストを持ってなくてもArtificial Intelligence: A Modern Approachで色々見られる*1。章によっては英文だけどpdfで見られるし、掲載されている疑似コードは全て見られる。教材のスライドが揃っているので、これも合わ…

データが扱える人を探せ! 再考

データっていうか高階関数なら使えます - 日々ごちゃごちゃと考えるを読んで、map-canの使い方を知ったので試してみる。モジュールをみて勉強できるけど、こうやって書き比べをするのも参考になって有り難い。

データが扱える人を探せ!

JAVA5.0でGO!! | プログラミングに自信があるやつこい!! というわけで、気楽に作ってみた。topcoderからの出題なのね。

10分でカード配りな!

10分でコーディング | プログラミングに自信があるやつこい!! via トランプを配る - 日々ごちゃごちゃと考える ということで、気軽に作ってみた。

乱数降下法(3) 境界面を求める。

今回で乱数降下法(1) 関数推定 - 象徴ヶ淵のrdmは一通り終わりである。ちなみにrdmがキーワードになってるけど、random descent methodの頭字語なので別物である。 今度は、測定点が空間内で、ある関係式で二分できるときに、その係数を決定させたい。実際、…

乱数降下法(2) 関数を解く

今回も乱数降下法(1) 関数推定 - 象徴ヶ淵で作ったrdmの話である。係数決定に使えるのだから、当然普通に方程式を解くことも出来る。 (defun f1 (x) (lambda () (+ 11 (* -3 x) (* x x)))) f1のように、変数を持たない関数を返すようにすれば、その式の結果…

タイトル変更のお知らせ

象徴の縁→象徴ヶ淵(シンボルがふち) 端から中心へ。でも本当は同じものだという感じで。 タイトル変更記事が日記の1%程度を占めている気がするけど気にしないよ!

乱数降下法(1) 関数推定

いくつかの変数の組があって、それらの間の関係式の形がわかっているとき、式の係数を探したいときがある。たとえば、次のようなデータがあるとする。 #x y z f(x,y)=z 10 3 -19 16 9 -19 9 2 -19 15 16 -19 12 12 -19 17 16 -19 5 13 -17 4 19 -15 15 3 -19…

簡単な分数と小数の対応表

不明な式を解析するのに便利そうなので作ってみた。1〜100までのx,yを使ってx/yを作り、整数値となるものを外してソートするだけである。下のコードは手抜きのため、非常に遅いので実行する際は注意。 ;分数早見表を作る。 (let (l) (dotimes (a 100) (dotim…

人がケーキを食べるシミュレーション

;世界があった。 (defvar *the-world* nil) ;神はケーキを作った。 (push '(cake) *the-world*) >((cake)) ;神は人間を作った。 (push '(person) *the-world*) >((person) (cake)) ;神は人間にケーキを食べさせた。 (set-status ;疑似コード '((a person) -i…

高槻やよいさん誕生日おめでとうだし

1.11-1.13

1.11について、後半の命題は正しいとしよう。しかし、それは前半の命題を含意しない。それは、1.12についても同様である(ただし、これについては一考の余地がある)。また、1.13についても同様とする。つまり、ある法則にしたがってしか動作しないのにも関わ…

1.10

反射行為は合理的であり、知的ではない。ところが、反射のギミックを用意するのは設計者である。進化はこれを偶然に行う設計者であるが、これを短時間に行うには知性が必要であろう。つまり、知性は時間によって解決できることをごく短時間で行うものであろ…

1.9

進化とは、自然淘汰の歴史である。合目的的に効率よく行動できなければ競争に負けてしまう。合理的に行動するシステムの方が効率が良く、競争に勝ちやすいのである。目的は、とにかく生存時間を延ばすことだ。それは、捕食、生殖を含む。 あるいは、機械(ソ…

1.8

高次の知能行為は人にとって有用であり、かつ、記述可能なロジックで行われている。このため、最初に研究される対象として適切であったと思われる。一方で、基礎的な認知能力について知らなければ、人間が実際にどのようにそれらを行っているかが不明なまま…

1.7

a おそらく可能。卓球には俊敏な反応と動作が求められるが、腕に関しては野球のどんな球でもヒットさせるマシンがある(うろ覚え)ので出来る。足は大きな移動がないので、この問題では必要ないだろう。あとはラケットの扱いが問題になる程度である。需要と資…

1.6

内省は確かに不正確である。人の意識できる範囲はごく限定されている。人の持つ機能の大部分は、内省が可能であることとは無関係である。ただし、内省は問題を発見するのには役に立つ。そのため、内省のための機構を持つことは競争に有利である。 何かを考え…

twitterのtimelineを読み上げる。

xyzzyには服部氏のtwitter-modeがあるので、せっかくだからsoftalkに読み上げさせようと思う。 というわけで、まずは準備。素数を読み上げる。 - 象徴ヶ淵の*softalk*とcall-softalkは流用する。ちなみに、softalkの設定でファイル/オプションを使ってる場…

素数を読み上げる。

すっかりゆっくりの声で定着しているhttp://cncc.hp.infoseek.co.jp/を入れてみた。exeに文字列を投げれば、その場で読み上げてくれるので非常に使いやすい。 (defvar *softalk* "SofTalk.exe" "softalkのパス") (defun call-softalk (&optional (str "ゆ?"…

dup-line(3)

もうちょっと詰めて当初の想定に近いものができた。そこら中変わってるのでもう一回。 (defun dup-line () (interactive) (labels ((indent () (buffer-substring (save-excursion (progn (goto-bol) (point))) (point)))) (let ((cur-indent (indent)) (cur…

dup-line(2)

コンプリーション - 象徴ヶ淵で作ったものだが、もっと単純に、現在の桁まで一致する行をコピーする挙動にした。以前は、ちょっとずつ変化を付けた場合でも補完できるようにと考えていたが、そのように使うことが少なかった。むしろ今回の挙動の方が良かった…

format

xyzzyのリファレンスには載ってなかったので2009-02-01 - kozima の日記 - cadr groupで初めて知ったのだが、~VAなどとすると、引数で桁数を渡せる。 そこで一つ問題である。 > (format t "~{~VT~A~%~}" '(2 a 3 b 4 c)) a b c 反復指示中で用いるには、この…

key-chord(っぽいもの)の修正

少しずつ微修正していたが、今回は面倒なエラーを発見してしまったので書いておく。 コマンドを入力したときの文字を(svref (get-recent-keys) (1- (length (get-recent-keys))))と取得していたのだが、これでは(get-recent-keys)が空だった場合に問題となる…