• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:question about Prolog)

質問 about Prolog

このQ&Aのポイント
  • Prologについて質問があります。
  • Prologで簡易和英・英和翻訳機をつくろうとしていますが、途中で問題が発生しています。
  • 英語から日本語への翻訳はできるのですが、日本語から英語への翻訳が無限ループしてしまいます。回避方法はあるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • h_hikita
  • ベストアンサー率40% (104/257)
回答No.1

この例だと、第1引数が不定の場合はひたすらリストに単語を追加して行くと いう動作をすると思います。 prep_phrase(A,[],[heya,no,naka,no],[]) prep([in|A],A,[naka|[no|[]]],[no|[]]) noun_phrase(A,[],[heya,no,naka,no],[no|[naka|[no[]]]]) noun([rooms|B],B,[heya,no,naka,no],[no,naka,no]) prep_phrase(B,[],[heya,no,naka,no],[heya,no,naka,no]) prep([in|A],A,[naka,no,heya,no,naka,no],[no,heya,no,naka,no]) このあと、nounはarg1,arg2ともに単語をリストの先頭に単語を追加するだけ なので成功します。その後再帰的にprep_phraseを呼び出しているのですが、 すでに、第1引数不定なのでリストは決して[]になりません...ので 停止条件が満たされること無く無限ループになります。(^_^; # いまだに、ぷろろーぐってのこってるんだ...なつかしい...

magicoflove
質問者

補足

 回答ありがとうございます。  この場合、何かこれを回避する方法などあるのでしょうか。それとも、規則を書き換えないといけないのでしょうか。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • h_hikita
  • ベストアンサー率40% (104/257)
回答No.2

根本的に述語の記述をもう少し整理したほうが良いとは思うのですが、 対処療法としては、 > prep_phrase(A, C, X, Z):-prep(A, B, Y, [no|Z]), noun_phrase(B, C, X, [no|Y]). > prep_phrase(A, A, X, X). の部分を prep_phrase([],[],X,X). prep_phrase(A, C, X, Z):-prep(A, B, Y, [no|Z]), noun_phrase(B, C, X, [no|Y]). としたら止まりませんか?ちょっともう手元で処理系を使える環境に いないので確認はできません。ごめん。 # 昔はメモリーも少なかったんで、 # # 適宜 ! を使って不要なスタックをつぶす。 # unboundな変数は述語の最後の方の引数にすると良い。 # 可能なかぎりtail recursionを使う... # list よりは 述語を使う等。 # # とかしてたような...15年は昔の記憶なので間違ってる所が # あってもかんべんしてください。(-_^;

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • prologでの数式の簡単化

    prologで微分をするプログラムを作ったのですが計算した結果が、例えば、 0*x^2+a*(2*x^1*1)+(0*x+b*1)+0 のように無駄に長くなってしまいます。そこでこれを簡単化する述語simple(P)を作りたいのですがどのようにしたら良いでしょうか? ?- simple(0*x^2+a*(2*x^1*1)+(0*x+b*1)+0). 2*a*x+b yes できれば上のような動作がするぐらいのものが作りたいです。 少なくとも余計な0,1を除去するくらいはしたいのですが・・・ お願いします。

  • prologのプログラムについて

    ?- ss([3,4,1,2,5],[1,2],X) X=[3,4,5] ?- ss([car(X,Y),car(Z,W)],[car(a,b),car(c,d),train(a),car(e,g)],List) List=[train(a),car(e,f)] List=[car(c,d),train(a)] List=[car(a,b),train(a)] ?- ss(X,[1,2],[3,4]) X=[1,2,3,4] となるようなprologのプログラムをつくりたいです。 丸一日、試行錯誤したのですが、結果どおりに動いてくれません。 分かる方がいらっしゃいましたら、教えていただけませんでしょうか。

  • 前置詞の後に続くのは・・・?

    前置詞の後に続くのは名詞、代名詞、名詞相当語句(動名詞、まれに不定詞)ですが、前置詞の後に名詞節が続くことも可能なのでしょうか? 例えば、 ”Have you ever thought of what it would be like to share an apartment with a total stranger? ” 「赤の他人と同じアパートに住むことがどんなことなのか考えたことがありますか?」 という参考書に載っていた文ですが、thought(think) of の of は前置詞ですが、その後に what it would...という疑問詞のwhatを伴った名詞節が連なっています。これは文法的に見て、どのように判断すればいいのでしょうか? 元来、前置詞とは後に名詞(名詞相当語句も)しか取れないのではないでしょうか?

  • 関係代名詞 what

    参考書の問題 Participants took notes on ( ) the speakers were saying. a what b which 参考書の訳 参加者は、スピーカーの話していることを書き留めました。 正解 b what 参考書の解説 空所前には前置詞のonがあります。 後ろを見ると「何を」 言っていたのかを示す目的語がない、 不完全な形です。 前置詞onの後には名詞のかたまりが必要で、空所の後には不完全な形の節が続いているので、空所には関係代名詞のwhatを選びます。 「Whatは名詞のかたまりを作り、後には不完全な節が続く」 という特徴を覚えておきましょう。 質問 on which 前置詞+関係代名詞の形ではだめなのでしょうか? wereは自動詞なので目的語はいらないと思うので、後ろは完全文だと思います。 詳しい解説おねがいします。

  • 前置詞の後には名詞が来ますが、that節は名詞にあ

    前置詞の後には名詞が来ますが、that節は名詞にあたらないんですか?that節全体の品詞ってなんですか?ていうか節に品詞なるものはないんでしょうか?

  • Prologについて

    リストの末尾への要素に追加するプログラムを教えてください。 第2引数のリストの末尾へ、第1引数が加えられたリストが第3引数として得られるようなプログラムで、次のように動作すればいいです。 ?-add_last(e,[a,b,c,d],L). [[Enter]] L = [a, b, c, d, e] ; [[Enter]] No ?-add_last(X,L,[a,b,c,d,e]). [[Enter]] X = e L = [a, b, c, d] ; [[Enter]]

  • 接続詞than

    接続詞あるいは、擬似代名詞として認識されているthan、asなどと前置詞はどう違うのでしょうか?後に名詞、名詞節・句等が来るなら同じようにも考えられますが。

  • 「前置詞と関係代名詞」について。

    Well, 'for a good cause' means for what the philanthropists think is a good reason. という文章について。 forが前置詞であると、以下のように置き換えるのは文法的に正しいでしょうか。 Well, 'for a good cause' means what the philanthropists、 「前置詞と関係代名詞」の “関係代名詞が前置詞の目的語になっている場合、その前置詞も一緒に関係詞節の先頭に置くことができる” という解釈からです。 学校で質問をしたら、 「“For What”は一つのフレーズですので、ここではFor とwhatを離して使うことができません。」 でも、think for whatと、whatがforの目的語の働きをしているから、一緒に関係詞節の先頭に置くこともできるし、関係代名詞だけを先頭に置くこともできるということは間違いでしょうか。

  • 関係代名詞 図表の意味がわかりません

    研究社出版、薬袋善郎先生の「基本文法から学ぶリーディング読本」pp246から質問なのですが、この2番の図がどの構文の何を図示しているのか、読まれた方で、わかる方いらっしゃいますか? 2.(2)(前置詞+名詞+前置詞+関係代名詞)これが一つの塊として形容詞節の先頭に来るのは理解できるのですが、 2.(1)のように前置詞+名詞(前置詞+関係代名詞)となっている例文が周辺に見当たらず、モヤモヤしてしまいました。 1.名詞+前置詞+関係代名詞 に関しては名詞=主語であれば前置詞+関係代名詞が作る形容詞句は前後どちらからでも名詞修飾できると言うことを言いたいのかなと自分なりに解釈しました。図としてはp245のc及びdに対応している?であってますかね、、 こちらの理解についても、もし間違えがありましたらご指摘いただけるとありがたいです。

  • 代名詞 one onesに就いて(今までにもいっぱいこの手の質問はあったとは思いますが)

    以前、代名詞oneなどの質問をしました。そのときは解決したと思ったのですが、また新たな疑問がわいてきたので、代名詞にお詳しい方、よろしくお願い致します。 (質問1)代名詞oneは関係詞節(例えば、whichなど)の先行詞となれるのか?(ある入試問題の英文で見つけたのですが、定かではありません。)またその例文があればよろしくお願いします。 (質問2)代名詞onesは関係詞節の先行詞となれるのか?またその例文。(こちらは今までに見たことがありません) (質問3)代名詞oneは前置詞句で限定できるのか?(that/thoseはできるのは知っております)またその例文。 (質問4)代名詞onesは前置詞句で限定できるのか?またその例文。 (質問3&4に関して、私は「できない」と思います。なぜなら前置詞句で限定されるときは、theが必要だと(the one.../the ones...など)思うからです。あくまでも推測ですが正しいでしょうか?) いろいろたくさん書いて申し訳ないのですが、よろしくお願いします。

このQ&Aのポイント
  • mac OS 13.0.1にアップデートしたら、EPSON社製品のPX-M5080Fプリンターが繋がらなくなりました。
  • macの最新バージョン13.0.1にアップデートした後、EPSON社製品のPX-M5080Fプリンターが使用できなくなりました。
  • mac OSの最新バージョン13.0.1にアップデートした結果、EPSON社製品のPX-M5080Fプリンターが接続できなくなりました。
回答を見る

専門家に質問してみよう