- 1 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 20:23:54 ]
- 過去スレ
Prologでまったり Part3 pc11.2ch.net/test/read.cgi/tech/1193354806/ PrologでまったりPart 2 pc11.2ch.net/test/read.cgi/tech/1102664221/ Prolog でまったり pc5.2ch.net/test/read.cgi/tech/976462999/ リンク集 www.summa.jp/lang/logic/prolog.htm bach.istc.kobe-u.ac.jp/prolog/ チュートリアル www.amzi.com/AdventureInProlog/ computing.unn.ac.uk/staff/cgpb4/prologbook/ www.intranet.csupomona.edu/~jrfisher/www/prolog_tutorial/pt_framer.html bach.istc.kobe-u.ac.jp/prolog/intro/ www.geocities.jp/m_hiroi/prolog/ www.asahi-net.or.jp/~JF1T-YSD/prologV2/
- 335 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 01:26:37 ]
- スミマセン、なんか言い過ぎましたw
そんなによくなくもないかもしれません
- 336 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 04:52:07 ]
- >>332
なかなか、よい発想をされますね。[]の分割問題ですね。これは、 あなたが、「 []を分割してBefore=[] After=[] なんて許さん。偽だ。」と 考えるなら、この述語は split(X,[H],[H],[]) :- H=<X,!. split(X,[H],[],[H]) :- H>X,!. split(X,[H|L],[H|A],B) :- H=<X,split(X,L,A,B). split(X,[H|L],A,[H|B]) :- H>X,split(X,L,A,B). となります。普通私たちは、 ?- split(5,[],A,B). A = [], B = [] が好ましい仕様だと思い込んでいるのですが、 少々Prolog呆けしているのかも知れません。
- 337 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 05:09:00 ]
- 私たちって言うな
- 338 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 05:23:14 ]
- >>337
リストの再帰で、 []になった場合の検証から入るプログラマって そんなにいるかな。まあ、時間的には一瞬だけど。 もし、変数が来たらは、常に注意を張りながらだと思うけど。
- 339 名前:デフォルトの名無しさん [2009/06/26(金) 05:37:18 ]
- >>338
宣言的でありたいというのがある。 できることなら停止節なんて省略したい。 こういう姿勢だから、考えないね。
- 340 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 05:47:30 ]
- 微妙すぎる。>>332は明確に否定するのが親切だと思うけど、
そもそもどこかの宿題を乱暴に投げているだけような気配がするw
- 341 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 06:01:59 ]
- >>339
それだ! 停止節省略指示子の導入。 帰納論理がそこそこ行けるんだったら、 それくらい処理系にやらせたっていいじゃないか。
- 342 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 18:33:08 ]
- 途中まで作って、トレースモードにして、正解を問い合わせればいい
| ?-split(5,[3,7,2,6,5,8],[3,2,5],[7,6,8]). + (1) 1 Call: split(5,[3,7,2,6,5,8],[3,2,5],[7,6,8]) ?l + (4) 2 Call: split(5,[7,2,6,5,8],[2,5],[7,6,8]) ?l + (5) 3 Call: split(5,[2,6,5,8],[2,5],[6,8]) ?l + (8) 4 Call: split(5,[6,5,8],[5],[6,8]) ?l + (9) 5 Call: split(5,[5,8],[5],[8]) ?l + (12) 6 Call: split(5,[8],[],[8]) ?l + (13) 7 Call: split(5,[],[],[]) ?l + (13) 7 Fail: split(5,[],[],[]) ?l + (12) 6 Fail: split(5,[8],[],[8]) ?l
- 343 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 18:35:25 ]
- 「トレースモードにして」じゃなくて「スパイ点を設定して」か
- 344 名前:デフォルトの名無しさん [2009/06/26(金) 21:10:24 ]
- >>333さん
すいませんでした。 なるほど、カットするとそこで探索を停止するからですね? >>334-335さん おっしゃるとおりです・・・。prolog理解するのとても難しいです >>336さん 空リストを停止条件に持っていく場合とそうでない場合の見極めが難しいです >>337さん 落ち着いてください >>339さん て、停止節ですか? >>340さん 丸投げではないです・・・。 >>342さん すいません。僕の使ってるprologは未完成での実行はできないです
- 345 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 21:13:40 ]
- split(X, [H|L], B, [H|A]) :-
split(X, L, B, A). でH =< Xではない時をマッチングさせるんでよね?
- 346 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 21:44:57 ]
- カット(!)はまだ勉強していない、という前提で進めた方がいいんでしょうか
- 347 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 21:47:54 ]
- >>332
> 否定(?)を利用してますがなくても問題ないですよね? これはなぜそう思ったんですか
- 348 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 21:56:13 ]
- >>326
> /*入力した変数Nより小さい場合 */ > split([A,B|R],[A|T1],[B|T2]) :- > A >= B, > split(R,[A|T1],T2). この「変数N」というようなコメントは、問題についていたヒントか何かですか
- 349 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 22:31:18 ]
- Prologって面白すぎ。もっと流行ればよいのに。
- 350 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 01:46:01 ]
- >>346さん
軽く説明された程度です >>347さん 授業の説明だと余分なところまでマッチングしないようにするためだと聞いたので なくてもいいのかなぁと >>348さん そこは自分でプログラムするときわかりやすいように書いてみただけです >>349さん 面白いですけど難しくて頭が痛くなりますw
- 351 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 02:26:10 ]
- >>344
> すいません。僕の使ってるprologは未完成での実行はできないです デバッグ機能がないというのはちょっと考えにくいので、 差し支えなければ処理系の名前を、参考までに。 一つ一つの確認を細かくしないと、Prologのプログラムはなかなか組めないんじゃないかと思います。
- 352 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 02:43:19 ]
- >>325 >>344
リストがそれぞれ何らかの「集合」を表していると解釈すれば自明ではないでしょうか。 ・空集合の部分集合は(どんな条件がついても)空集合だけ ・空集合を表すリストは空リストだけ
- 353 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 06:05:07 ]
- >>350
いろんな言語で宿題スレ pc12.2ch.net/test/read.cgi/tech/1242876647/ にPrologのプログラムが沢山載っています。 間違ってるところや、それを逐次修正していく過程が晒されている部分。 処理系依存(あるPrologでは動くが別のPrologでは述語未定義となり動かない)の ところも多いから、いろいろな意味で勉強になると思います。
- 354 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 08:44:23 ]
- 自演乙
- 355 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 11:22:10 ]
- >>351さん
terateamを使ってLinuxにアクセスしてemacsやらsicstusを入力してやってます >>352さん 貴重なご意見感謝します うまく見分けれるように頑張ります >>353さん prologの宿題スレになってますねw こっちのスレを回ってみようと思います。情報ありがとうございました >>354さん いったい何と戦っているんですか?ここで自演して自分に有益になるとは到底思えませんが? とりあえず落ち着いてください
- 356 名前:353 mailto:sage [2009/06/27(土) 16:39:14 ]
- >>354
いろんな言語で宿題スレに大量に書き込んでいるのは私ですが、 それがなにか? これは前スレで、よそのスレに載っているプログラムや課題を このスレでPrologに書き直そうという提唱や、 Prolog10000Tipsを目指す活動の手始めです。
- 357 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 23:09:40 ]
- prologプログラムの無限ループバグを防ぐtipsを教えてください。
C以上に暴走しやすい危険な言語ですね。
- 358 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 23:31:14 ]
- >>356
>>338-339と>>341もあなたではないかと思っているのですが、ひょっとして…?w
- 359 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 23:35:50 ]
- >>357
> 暴走しやすい これはいつだか、大学の先生がPrologで作ったCGIが無限ループしてひどいことになっていたのを見て思った
- 360 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 23:48:12 ]
- >>356
これまでの観察によれば ・動作確認をしないことが多い。 ・ISOから外れた述語を断りなく多用する。not/1など。 ・勘違いを書いても明確に訂正しない。 このへんはちょっとどうかと思っています。 2ちゃんねるだからアリ、という考えなのかもしれませんが。
- 361 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 23:55:39 ]
- オウフ語
・”F”は、太ったものに当てはまる。 ・”G”は、貪欲なものに当てはまる。 ・”a”は、アルバートを表示する。 ・”b”は、ベティを表示する。 ・主語述語形式の文”Pn”が新であるのが、”n”が表示するものが、 ”P”が当てはまるもののクラスの要素であるとき、かつ、そのときに限る。 ・”¬A”という形式の文が新であるのは、文Aが真で無いとき、 かつ、そのときに限る。 ・”A&B”という形式の文が新であるのは、文Aと文Bがともに新であるとき、 かつ、そのときに限る。
- 362 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 23:57:11 ]
- 誤字多すぎた。も一回。
オウフ語 ・”F”は、太ったものに当てはまる。 ・”G”は、貪欲なものに当てはまる。 ・”a”は、アルバートを表示する。 ・”b”は、ベティを表示する。 ・主語述語形式の文”Pn”が真であるのは、”n”が表示するものが、 ”P”が当てはまるもののクラスの要素であるとき、かつ、そのときに限る。 ・”¬A”という形式の文が真であるのは、文Aが真で無いとき、 かつ、そのときに限る。 ・”A&B”という形式の文が真であるのは、文Aと文Bがともに真であるとき、 かつ、そのときに限る。
- 363 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 00:06:31 ]
- >>359で言ったCGIですが、今探してみたら、ちょっと様子が違いました。
ttp://web.sfc.keio.ac.jp/~mukai/2004-LP/cgi-in-prolog/index.html > # 卓上計算機の実行 > # 卓上計算機 Prolog CGI ソース (calculator.cgi) ・「実行」のリンクが切れている。 ・「CGI ソース」のリンク先は無限ループになるが、本来実行されないもののように見える。
- 364 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 00:10:06 ]
- 表示的意味論付き単純言語オウフ。
例えば、アルバートを表示する、というのはアルバートという人がそこにいる 事態を指す/結びつける。
- 365 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 00:50:38 ]
- 参考文献も表示したほうがいいのではw
- 366 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 01:02:45 ]
- >>363
つまりこういうことかも。 ・POSTなりGETなりの方式で入力が与えられることを前提にしている。 ・無入力の場合に暴走するように書いてしまっている。 ・読ませるためのソースに実行可能フラグをつけてしまった。
- 367 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 02:35:52 ]
- 用語が変だった
"実行可能フラグ" の検索結果 約 291 件中 1 - 10 件目 (0.19 秒) > 真ということ は、実行可能フラグが立っていることを表すに過ぎません > True indicates only that the execute flag is on. "execute flag" -"No Execute flag" の検索結果 約 963 件中 1 - 10 件目 (0.13 秒) 「実行許可(ビット)」あたりかな
- 368 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 04:42:04 ]
- >>360
しっかりと、観察して下さったようで、ありがとうございます。 すでに利用していて、それを多少読みやすく書き換えたものも ありますが、Firefoxの六行の小さな窓の中で上から書きながしたものが ほとんどで実際動作実行をしたものはあまりありません。 Upしたものを読み返して、間違ってるなと気がついた時は訂正して いると思いますが。C/C++の宿題スレの更新速度が急でコーヒー休憩に 少しづつ課題をUpして次の休憩にコードを書きなぐるという書き込みな ので、実行確認は今後もしないと思います。間違いは指摘してください。 標準の組み込み述語に限定すると、2chの1レス枠に入らなくなる 課題が多いため、繰り返し使われるものについてはライブラリに あるものとして、いちいちの定義を省略しています。 get_line/1または2、get_lines/2、split/3、concat_atom/3、append/4、 などがそれです。他の言語との比較と言う観点からはフェアでないとも 言えますが、書き込みの目的がチュートリアルの草稿としてこれを公開 することにあるのであまりその点は気にしていません。not/1は\+より こちらの方が誰にでも意味がわかるいう理由でこれで通しています。
- 369 名前:368 mailto:sage [2009/06/28(日) 05:01:05 ]
- >>358
>>336、>>338と>>340は私だが、>>339は違うよ。この時間帯に 読んでくれているのが誰だかは知っているがw
- 370 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 05:08:06 ]
- と、いう人がいるので注意してください。
- 371 名前:368 mailto:sage [2009/06/28(日) 05:13:09 ]
- 10000Tipsについては、著作権の問題が出てくるようで
弁護士に相談中。いちいち著作者に了解をとることは コスト的に無理なようなので。 試しにスポーツルールの述語化をしてみようと思ったの ですが、ただただベースボールマガジン社が発行している 著作物を編集し直した物になってしまいました。
- 372 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 05:15:58 ]
- >>368
>>309-312はまだちゃんと訂正していないような気が
- 373 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 05:30:15 ]
- >>370
ところであなたも早朝派ですか? 私は早朝ジョギング派なので3時半起きで、2chの書き込みも その後1-2時間の間にしますが、それに関してのメールが6時前に 到着しているので驚くのですが。結構多いんですね。
- 374 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 05:43:54 ]
- >>311 サービスで仕様を拡張していますが、そこはそのままにすると、
g1(L) :- g1_prompt,read(X),g1_2(X,L). g1_2(end,[]). g1_2(A,[A|R]) :- \+(A==end),g1_prompt,read(B),g1_2(B,R). g1_prompt :- write('input='). ですか。
- 375 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 05:44:31 ]
- 早朝派じゃないのに書き込んでみるテスト
Prologって研究には良さそうでも就職にはヤヴァそう C, C++, Java辺りを必須という求人は何度も見たことはあるが Prolog必須という求人は見たことがない
- 376 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 05:52:09 ]
- なぜか日本では皆無ですね。
うちがそのうちのせますが。いまはきゅうじんのよゆうなし。
- 377 名前:374 mailto:sage [2009/06/28(日) 06:15:11 ]
- 何の話か明確にすると、
?- ... , g1(L), ... ,fail. のように、一度end入力で終了したg1がバックトラックによって、 再び実行の可能性が生まれた場合に、意図通りの結果になるかと いうことです。
- 378 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 07:47:04 ]
- それから、いろんな言語で宿題スレですが、私のPrologコードは
課題を示したレス番号の頭にtをつけたHTMLファイルを nojiriko.asia/prolog/ というディレクトリに全部コピーすることに しています。メールなどで間違っているんじゃないかと指摘を受けた 場合は、このサイトの方はできるだけ速やかに訂正しますが、宿題スレ の方にはその旨の書き込みはしません。いつの間にか書き換わって いることも多いのでちょっと覗いてみてください。
- 379 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 08:03:33 ]
- >>375
いまやビジネスの世界はひたすら論理。今まで日本は会社規則があっても 無視してたり。契約書作成しようと思うと取引先から敬遠されたりと、 論理的なことを何かと回避できる環境にあった。 んでまぁそういう時代は終わりを迎えている。 今や本屋の自己啓発本コーナに行けば論理が大事だ、という本が置かれ、 論理に対する需要と言うのはかなり上がっている。 確かに一般に普及する可能性は低いけど、上記の論理的な力を必要とする層 (金融とかコンサルとか上流の方々ね)には教育用ツールとして需要がある 可能性はある。例えば、『〜論理トレーニング』という本の内容として prologによる論理トレーニングとか。 あとは、企業の訴訟リスクが上がっているとかなんとか理由つけて法律の エキスパートシステム作ってみるとか。 裁判所の判例はもはや膨大で、弁護士費用は高い。とりあえず、抱えている案件に 合致する判例があるかどうか探索するシステムとか作れば結構いけるんじゃない。 法律家の助けが必要だけど。差別化は結構できるんじゃないかね。
- 380 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 08:08:52 ]
- あと、心理学の人と、認知科学の人、哲学の人も必須だな。
普通にやると第五世代と同じ末路になる。 あと問題は日本語文のパターンマッチかな。
- 381 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 08:12:55 ]
- うーん。微妙な日本語だ。
- 382 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 08:30:47 ]
- あと20年前と違うのはWebの発展なんだから、セマンティックウェブ関連で
なんか出来そう。 500億かけた研究結果がそのまんま公開されてて、しかもどうやらあんまり 中身を見られていないみたいなんだし、意外と宝の山かもしれないよ。 (評価計算の方法がわからないし、現在価値としては下がっているけど 少なくとも数千万ぐらいの資本価値はあると考えてもいいはず。いきなり 数千万資本をゲットできるというのはそれなりにお得な気はする。) 見直す価値がある可能性はある。
- 383 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 14:59:53 ]
- 「いろんな言語で宿題スレ」の中で
pc12.2ch.net/test/read.cgi/tech/1242876647/168 pc12.2ch.net/test/read.cgi/tech/1242876647/225 といったProlog向き問題が未回答となっています。 どなたか、よろしくお願いします。
- 384 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 05:45:20 ]
- 前に10000Tipsは著作権の問題が出てくるということを書いたのですが、
意味がわからんとのご意見メールをいただきました。 私の「Tip」のイメージを示します。これで2Tips。 燃ゆる頬(ラグビーの頬傷ほてる海見ては). 燃ゆる頬(車輪繕う地のたんぽゝに頬つけて). 燃ゆる頬(目つむりていても吾を統ぶ五月の鷹). 燃ゆる頬(沖もわが故郷ぞ小鳥湧き立つは). <以下略> 句集(燃ゆる頬,寺山修司,ラグビーの頬傷ほてる海見ては). 句集(燃ゆる頬,寺山修司,車輪繕う地のたんぽゝに頬つけて). 句集(燃ゆる頬,寺山修司,目つむりていても吾を統ぶ五月の鷹). 句集(燃ゆる頬,寺山修司,沖もわが故郷ぞ小鳥湧き立つは). <以下略>
- 385 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 07:48:21 ]
- ----- ここまで役に立つTipなし
- 386 名前:デフォルトの名無しさん [2009/06/30(火) 15:44:51 ]
- Tips というより、データベースでは?
- 387 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 17:06:38 ]
- >>386
Prologですからデータベースですが、それをTipという感覚でやろうということです。 福島さんが100mの日本記録出した時、何歩で走ったか。これをビデオで確認したから 述語としておこう。これでひとつ。 Googleで検索できない対象というのがありますね。一つには過去の文献や文学作品の 内容に関する部分。無尽蔵にあります。これはTipとして復活するだけで価値がある。 構造のしっかりしたデータベースである必要もないし、述語として十分に機能する 必要さえない。気楽に日常的に拾い上げられることだけが大事です。
- 388 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 18:55:33 ]
- 天気(神奈川,20090630,晴れ).
- 389 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 18:58:04 ]
- 好き(イチノ,理美).
- 390 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 21:26:12 ]
- % p(原因, 結果)
?- p(X, 俺に彼女ができる). false
- 391 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 02:15:02 ]
- マル得Prologトリビア探検隊
gollem.science.uva.nl/SWI-Prolog/Manual/DocIndex.html SWI-Prolog 5.6.60 Reference Manual > \ > +/1 > /2 > 1 > =/2 > ==/2 > =@=/2 www.ic.unicamp.br/~meidanis/courses/mc600/200002/Manual-Prolog/Index.html SWI-Prolog 3.2.9 Reference Manual > \ > /1 > /2 > 1 > /2 > =/2 > @=/2 \+と\=の消え方が変化している
- 392 名前:387 mailto:sage [2009/07/01(水) 05:32:35 ]
- 気楽にと書きましたが、逆に徹底してとか、偏執狂的にというのも
あるでしょう。ある書物を徹底的に述語化してしまうとなどがこれ です。古典的なものはもちろん現代の例えば白書的なものでも、 表、グラフの述語化は十分に有用で希少価値を持ちます。社会的に 文章、表、グラフなどの中立をする形式は未開拓であり、未完成に 放置しても、後に利用、発展が自然に可能なProlog述語への書き換 えは有力なものではないでしょうか。
- 393 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 05:59:28 ]
- >>391
わからないです(><;)
- 394 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 06:13:14 ]
- 前スレに書いたことですが、私のインタプリタ環境で
?- 相模(X). と質問すると答えが返ってきます。相模/1は未定義ですが。 未定義の質問が(導出の最中でも)現れると、その述語名の 性質を調べて、関係ありそうな分野からの検索します。分野には 古典文学->歴史文献->地名等 の優先順位がつけられているため ?- 相模(X). X = 花ならぬなぐさめもなき山里に桜はしばし散らずもあらなむ; X = なにか思ふなにをか嘆く春の野に君よりほかに菫つませじ; X = 見わたせば波のしがらみかけてけり卯の花さける玉川の里 no という具合になります。この歌並びからこれは千人万首を 検索してるだけだなとわかってしまいますw セマンティックウェブの話もありましたが、ウェブに頼らずこういった 情報発信を自らPrologサーバからやろうではないかということです。 多くのボランティア的献身によって(千人万首もそうだ)我々のウェブ 環境は豊かになりましたが、的確に得られる情報は未だ極々僅かです。 負担にならない蒐集・表示形式としてPrologが活躍する余地は大きい ように思いますが如何でしょうか?
- 395 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 06:38:23 ]
- www.eng.cam.ac.uk/help/tpl/textprocessing/teTeX/latex/latex2e-html/ltx-58.html
> Tabbing commands > * \= (set tab) : > * \+ (indent; move margin right) www.eng.cam.ac.uk/help/tpl/textprocessing/teTeX/latex/latex2e-html/ltx-164.html > Exceptions to this rule: > * \ itself because \\ has its own special meaning. Use $\backslash$. このへんだな
- 396 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 10:04:07 ]
- やばい>>395のLaTeX説は眉唾だった。\/が消える説明がつかない。
prolog.cs.vu.nl/git/pl.git?a=tree;f=man;hb=HEAD Perlでひたすらs/.../.../g;していたとは。。
- 397 名前:デフォルトの名無しさん [2009/07/01(水) 12:16:39 ]
-
split(5, [3,7,2,6,5,8], Before, After). Before = [3,2,5] (5と同じか、小さい数のリスト) After = [7,6,8] (5より大きい数のリスト) このようにリストの中を与えた数より大きいか小さいかで分けたいのですが どうすればよいのでしょうか?
- 398 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 12:24:08 ]
- >>325以降をどうぞ
- 399 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 00:01:03 ]
- >>387
opencycとかWordnetの日本版ってこと?
- 400 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 06:39:12 ]
- >>399
そうですねとは、さすがにいえないw まだ何も始まってないから。 ライブラリを目指すのではなく、 断簡、反古として知識、ルールの切れっ端を 可能な限り隙間なく集める。述語とする。 ありとあらゆる分野に於いて。 使い手は適宜、論理変数を補充して、自分にふさわしい 使い方を見つける。 10000Tipsとは極度に控えめに言っている。 10000があっという間ではないかと予感させる一例を。 典拠不詳(古墳多くは少年の人). /* でも、 */ 古墳多くは少年の人(求塚,世阿弥,典拠不詳). /* でも */ 述語にしておこうと思い立った人が閃いた形式で登録すればよい。 典拠不詳であることが大事なのか、世阿弥の求塚という作品に 「古墳多くは少年の人」という一節があることを伝えたいのか、 そんなことはどうでもよい。心にとまったことを書き付ける形式が ひとつあるということだけが大事なのだ。
- 401 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 15:48:03 ]
- Prologトリビア探検隊・予感編
ttp://dspace.wul.waseda.ac.jp/dspace/bitstream/2065/772/1/3603u104.pdf > 充足する必要のある 2 つの別の目標 (goal) からなる質問の組み合わせは、 : > ゴールの充足が試みられたとき、箱の中にある節と適合してその節の : > 1. クエリーとして、hoge(F, name5)が入力されたとき、 C&M邦訳を要約したと思われる部分だけカタカナ語が少ない。
- 402 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 00:28:35 ]
- >>400
意図としては大体了解できたと思う。ただ、 >>ありとあらゆる分野に於いて。 というのは、気を悪くして欲しくないけど、それは危険フラグだ。 辞書爆発が問題で使い物にならないといわれているのに、 改めてそれに無策で挑むというのは、人を説得しきれない。 むしろ分野を限りなく限定させてしまったほうが面白い結果が 得られるかもしれない、と無責任に思う。
- 403 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 01:01:58 ]
- abelard.flet.keio.ac.jp/ontology/
- 404 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 02:44:42 ]
- 言語哲学にどう接続させるか。
- 405 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 10:01:55 ]
- sourceforge.jp/projects/prologpedia/
> あらゆる情報を Prolog のプログラムとして蓄積する為の基盤作りをしようと思います。 > 登録日: 2009-07-01 08:05 またそういう
- 406 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 20:10:06 ]
- 人は壁にぶつかって成長していく。静かに見守ろう。
- 407 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 21:01:35 ]
- 切れっ端ならtipsじゃなくてchipsだね
- 408 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 21:06:53 ]
- 辞書でchipを引くとひどい意味ばかりあるw
- 409 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 02:33:05 ]
- 最近まったりが足りない。
- 410 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 03:34:34 ]
- Prologではったり
- 411 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 22:33:31 ]
- この言語極めたらガンダムのハロとかオートマトン作れんの?
- 412 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 23:36:30 ]
- うん
- 413 名前:デフォルトの名無しさん [2009/07/11(土) 09:55:54 ]
- 失礼します初心者です。
Prologで(C言語的な意味で)普通の計算式ってどういう風に書くのですか。 x=50 y=100 z=x^2+2*y+5 print(z) みたいなかんじのことをProlog風に書くとどうなるのでしょうか。
- 414 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 11:26:30 ]
- >>413 Prolog風かどうかは疑問ですが。どこが違うかよく見てください。
?- X=50, Y=100, Z is X^2+2*Y+5, write(Z).
- 415 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 16:27:01 ]
- >>413
>>1に上がっているサイトにもいくつかあります bach.istc.kobe-u.ac.jp/prolog/intro/arith.html www.geocities.jp/m_hiroi/prolog/prolog01.html#chap5 その他 www.kprolog.com/doc/ja/builtins/math.html
- 416 名前:413 [2009/07/18(土) 06:57:50 ]
- 遅くなりました。プロバイダがアク禁だったので。
おかげさまで計算することができました。ありがとうございました。
- 417 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 23:29:08 ]
- 他スレで質問したのですが流れてしまったのでこちらで質問させてください
?- con2(2, [1,3]). no ?- con2(1, [2,3]). yes と答えるようにしたいのですがどうしたらよいのでしょうか?
- 418 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 00:06:42 ]
- con2(1, [2,3])だけをyesとしたいのであれば、
con2(1, [2,3]). と定義するだけでOK。
- 419 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 00:08:42 ]
- >>417
con2(X,Y) :- X = 1, Y = [2,3].
- 420 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 00:29:14 ]
- >>418さん>>419さん
言葉が足りていませんでした・・・。 今、ハノイの塔の問題を作っていて ペグの上に載るディスクは常にそのペグの最小ではならないと 移動先でもディスクは最小でないとならないって言う制約の判定をする部分を 作っていてそこに当たる部分なんですが・・・。 途中までは作って制約の部分の製作がわからなかったのでこちらで質問させて いただきました 未完成のプログラム乗せたほうがいいですか?
- 421 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 02:35:46 ]
- >>420
一番上の円盤(B)がAより大きい con2(A,[B|R]) :- A < B.
- 422 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 02:54:44 ]
- >>420
'Aの一番上の円盤がBの一番上の円盤より小さい'(A,B) :- A=[A1|_],B=[B1|_],A1 < B1. 'Aには現在載せられない'(A,B,C) :- A=[A1|_],B=[B1|_],C=[C1|_],A1 < B1,A1 < C1.
- 423 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 06:21:32 ]
- >>420
本当に必要な述語はどんなものかという分析ができているのかどうか ちょっと不安
- 424 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 07:05:40 ]
- >>417
?- con2(1,[]). これは?
- 425 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 23:35:36 ]
- >>421さん
そのままのせてみたらエラーが出たのでcon2(A,[B|R]) :- A < B. をcon2(A,[B|_]) :- A < B.としたらソースの読み込みはできたのですが エラーが出てしまいました >>422さん それをいれて実行してみたら Permission error: cannot redefine built_in ','とでてしまいました (A,B) :- A=[A1|_],B=[B1|_],A1 < B1.の部分はまとめると con2(A,[B|R]) :- A < B. となるのかなぁと思ったのですがどうでしょう? >>423さん なんかその通りなきがしてきました・・・。 >>424さん 申し訳ないです。そこまでは書いてなかったです
- 426 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 23:40:33 ]
- >>425です連レスすいません
:- [search]. initial_state(hanoi, [[1,2,3],[],[]]). goal_state(hanoi, [[],[],[1,2,3]]). operator(hanoi, left_to_right(Disk), [[Disk|RestA], B, C], [RestA, B, [Disk|C]]) :- con2(Disk, C). operator(hanoi, left_to_center(Disk), [[Disk|RestA], B, C], [RestA, [Disk|B], C]) :- con2(Disk, B). % 移動先で制約2を満たしていることをチェック operator(hanoi,center_to_left(Disk), [A, [Disk|RestB], C], [[Disk|A], RestB, C]) :- con2(Disk, A). operator(hanoi, center_to_right(Disk), [A, [Disk|RestB], C], [A, RestB, [Disk|C]]) :- con2(Disk, C). operator(hanoi, center_to_center(Disk), [A, B,[Disk|RestC]], [A, [Disk|B], RestC]) :- con2(Disk, B). operator(hanoi, center_to_left(Disk), [A, B,[Disk|RestC]], [[Disk|A], B, RestC]) :- con2(Disk, A). %-- 制約2 % 一番上にあるディスクよりも、小さいことを検査 /* ?- con2(2, [1,3]). ?- con2(1, [2,3]). ここまでは作ったんです制約のところは con2(X,Y) :-X > Y,con2(X,[Y|_]).と最初作ってみたのですが | ?- search(hanoi,S,G,P,A). と聞いてもnoと答えられたので詰まってしまいました・・・。
- 427 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 08:25:39 ]
- 突っ込みどころに目移りしますが、とりあえず…
>>426 > con2(X,Y) :-X > Y,con2(X,[Y|_]).と最初作ってみたのですが その定義では ?- con2(1, [2,3]). としたとき、1 > [2,3] という(規格上は)意味のない目標が実行されますよね。 Yとしてリスト(のみ)が与えられることを意識していないように見えます。 そもそも「一番上にあるディスクよりも、小さいことを検査」するのに、 なぜ再帰的定義を使おうと思ったのでしょうか。
- 428 名前:デフォルトの名無しさん [2009/07/22(水) 10:20:15 ]
- 質問です
学校の宿題でナンプレ(数独)を解かないといけないんですが この言語肌似合わなくて今だにさっぱりです できれば答、ダメなら方向性だけでも教えてください
- 429 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 10:53:02 ]
- >>428
肌に合わないなら無理してPrologで解く必要は無いよ。 自分に合った言語を使えばいいんだから。 Prologを使う事も宿題の前提の一つならあきらめなさい。 神様や天才じゃないんだからあきらめることを学ぶのも勉強。 だまには宿題ができず先生に怒られるのもいいでしょ。 それが嫌なら、まずは自分でできるところまでPrologで挑戦して、 できなかったところを具体的に自分の言葉で表現してみて。 そうすればスレの住人も返事のしようがある。
- 430 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 11:43:31 ]
- prolog使うのも条件なんです
最終レポートなんで出さないのはちょっと… c系列なら二次元配列で表して左上はじから数字を当て嵌めてダメならバックトラックで出来ると思うんですがprologでそれをどうやっていいのか見当がつきません。 ヒントだけでもお願いできませんか?
- 431 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 11:58:02 ]
- あきらめなさい
- 432 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 12:01:51 ]
- 理解してないくせに単位だけ取ろうなんて図々しいよな。
- 433 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 12:02:16 ]
- >>430
nojiriko.asia/prolog/index.html
- 434 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 12:17:12 ]
- すみませんご迷惑かけました
>>433 ありがとうございます。みてみます。
- 435 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 12:22:10 ]
- まあまあ、俺も学生時代そんなんだったし興味ない言語に縛られるのもやでしょ。
特にCとかになれた人ならprologちょっとつらいしね。 この辺みれば良いんじゃないかな kaz.cyteen.nagoya-bunri.ac.jp/advprog2/prolog.html
|

|