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

ニュートン法で平方根

Prologで作る数学の世界―Prologそして集合‐位相‐群の第3章の問題。ニュートン法で平方根を求めろ。 newton(N,R) :- newton_sub(N, N, R), !. newton_sub(N, Xn, Xn) :- Xn ** 2 - N < 0.00000001. newton_sub(N, Xn, R) :- Xn1 is Xn - ((Xn ** 2 - N) /(2 …

差分リストの練習 その3

差分リストといいつつ、lastはただのリストの練習だった。 last my_last([_, Head | Rest], Result) :- my_last([Head | Rest], Result). my_last([Result | []], Result). slices split_at(N, [Lcar | Lcdr], [Lcar | F], R) :- N > 0, N1 is N - 1, split_…

差分リストの練習 その2

同期同士の勉強会でお題をもらった! zip list_heads(Lists, Hs, Rs) :- list_heads_sub(Lists, Hs, Rs), !. list_heads(_, [], []). list_heads_sub([[H | R] | Ls], [H | Hs], [R | Rs]) :- H \== [], list_heads_sub(Ls, Hs, Rs). list_heads_sub(_, [], …

差分リストの練習

取り合えずいくつか無理やり差分リストで書いてみる。 % 深さ優先で左から走査する場合 flatten(NestedList, FlatList) :- flatten_sub(NestedList, [FlatList, []]). flatten_sub([X | Xs], [Head , Tail]) :- flatten_sub(X, [Head, Appender]), flatten_s…

差分リストの続き

とりあえず、こんなのが差分リストの定石だということはわかった。 hoge([W | Ws], [Xs, Ys]) :- hoge(W, [Xs, Xs1]), hoge(Ws, [Xs1, Ys]). こういう条件がたくさん登場する。 だめだ ぜんぜん差分リストわからん。10分くらいしか考えてないけど。 とりあえ…

文字化けしたUTF8の変換

よくある\u30e1みたいに16進になってしまったUTF8の変換 #!/usr/bin/env ruby # -*- mode: ruby; coding: utf-8 -*- require 'optparse' def main prefix = '\u' suffix = '' parser = OptionParser.new parser.banner = "Usage: #{File.basename($0)} [opti…

リストと繰り返しのつづき

繰り返し repeatを使った繰り返し。repeatは、自分までバックトラックが達したら再度repeatの次からやり直させる演算子。入力をうけとり、そのまま返したいなら次のようにする。 my_echo :- repeat, get_char(user_input, C), put_char(user_output, C), C =…

カット

バックトラックを禁止する述語らしい。これを使えば リスト - 放牧日記のtakeやdropも my_take(0, _, []) :- !. my_take(N, [Lcar | Lcdr], [Lcar | R]) :- N > 0, N1 is N - 1, my_take(N1, Lcdr, R). my_drop(0, L, L) :- !. my_drop(N, [_ | Lcdr], R) :-…

リスト

prologのリストのリテラル表記。 [this, is, a, list]. リストはLISPと同じようなセルになっている。 [Car | Cdr] これはyes。LISPのリストとまったく一緒。 | ?- [a | [b | [c | []]]] = [a, b, c]. take appendは昨日やったので、takeなどを定義してみた。…

規則の読み込みのメモ

ファイルを読み込ませる以外の方法。ファイルから読み込ませる場合はこうする。 | ?- ['filename.pl']. ファイル全体ではなく一部の分のみ読み込ませる場合、[user].でいける。 | ?- [user]. {compiling user for byte code...} even(0). even(s(s(X))):- ev…

卒研の結果

いまさらながらあげておく。 ガベージコレクションの実装法と評価 あまり良い研究じゃなかった気もする。バイトばかり行ってたし。

家系図

とりあえず、prologでは家系図を作ってみるのが定石らしい。 ので、華麗なる一族 (競馬) - Wikipediaことマイリー系を作ってみる。 あまり大きいのは辛いので、ここで断念。 /* -*- mode: prolog -*- * horse-family.pl */ /* 牝馬 */ female(mairie). % マ…

prolog-mode

設定が間違っていた。prolog.elは/usr/share/emacs/site-lisp/prolog-el/prolog.el にあって、こっちを利用する。.emacsは以下のとおり。 (autoload 'run-prolog "prolog" "Start a Prolog sub-process." t) (autoload 'prolog-mode "prolog" "Major mode fo…

append

insertを参考にappendを書いた。とりあえず動くように見える。 insert(1, X, L, [X | L]). insert(N, X, [Y | L], [Y | Z]) :- N > 1, N1 is N - 1, insert(N1, X, L, Z). my_append([], S, S). my_append([Fcar | Fcdr], S, [Fcar | R]) :- my_append(Fcdr,…

prologをやるぞー

なんかprologをやることになった。 参考 Prolog with GnuEmacs M.Hiroi's Home Page / Prolog Programming 環境 とりあえず、環境を作らなければ話にならないので処理系をインストール。 ubuntu 7.10でprologを検索すると、これだけ出てくる。 UBUNTU-VM [0]…

インターネットがないわけですが

バイト先でしかインターネットが使えないので、もう何も追えていないorz。いつも見ているのは携帯でも見えるついったーくらいか。 もうインターネットは光回線ではなくe-mobileにするかなぁ。光回線の工事は不動産屋さんと契約している電気屋さんに申し込め…

もう

二月も終わりかよ。。

書き捨てコードのmake(rake)

ちょっと試したいコードを書くときに毎回コンパイラを呼ぶのは面倒。Makefileを書くのも面倒。 てなわけでRakeの習作。ソースコードにフラグを書き込んでおけば、それを利用してコンパイルしてくれる。 ソース Rakefile #==================================…

Y Combinator

なんかはやっているらしい。でも一週間遅れだから乗り遅れ気味。書き換えネタ。 Y = lambda do |x| lambda do |procedure| x.call( lambda { |arg| procedure.call(procedure).call(arg) } ) end.call ( lambda do |procedure| x.call( lambda { |arg| proce…

メタマジックゲーム その2

役に立つ立たない、応用がとかを考える前に、著者の言うとおりパターンを楽しもうと思った。こんな実用どうしようって考えているからいけないんだ! あと、メタマジックゲームのlispの部分は思い切った印刷がされていて新鮮!だった。

メタマジックゲーム

評判がよい本をついつい買ってしまうけど、評判どおり面白い。まだ2章しか読んでないけど、自己言及のパラドックスや自己言及分の作り方などはあまり考えたことがなかったのですごく新鮮に感じる。 ただ、ゲームとしての自己言及は面白いけど、それをなぜこ…

第1回 RHGの逆襲

とりあえず、参加した記録をエントリとして残す。

installer

Content Moved (Windows)

[現実逃避] 赤入れ

プログラミング言語C++第3版の6章まで正誤表にしたがって赤入れを行った。 いい作業でした。自分収容所に向いているかも。

ひきこもり

一日部屋でひきこもっていた。他の人のいる場所にいないとどんどんだめになっていく気がする。

ヤッターマンのOP

新OPアニメには旧OP曲の方が合うね。新OP曲はテンポが悪いし、アニメに曲が負けてる。来週から旧OP曲でいってほしい。 新?真?ヤッターマンOP(やりなおしVer.) ‐ ニコニコ動画(原宿)

駄文 その5 ロスタイム

連休明けまでレポートを200通見なければいけないらしい。よって、11日に出しても連休明けに出しても換わらないとのこと。このロスタイムに気に入らない部分を直すんだ!

駄文 その5 ロスタイム

連休明けまでレポートを200通見なければいけないらしい。よって、11日に出しても連休明けに出しても換わらないとのこと。このロスタイムに気に入らない部分を直すんだ!

[卒研] 駄文 その4

とりあえず80%くらい終わらせたので提出する。一時提出だしよいよね。。

[卒研] 駄文 その3

完遂率 55% だとよいなって感じ。終わらない。。つか、はてな記法でテキストファイルに書いてるし。ファイル名draft.txtだし。。