🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Prolog

Prologは、非手続き型プログラミング言語です。述語論理を使った論理型言語と言われており、自然言語解析や理解、推論などのAIに有効です。エキスパートシステム開発などに用いられています。

Q&A

0回答

1512閲覧

prologによる転置行列の作成

submaru

総合スコア18

Prolog

Prologは、非手続き型プログラミング言語です。述語論理を使った論理型言語と言われており、自然言語解析や理解、推論などのAIに有効です。エキスパートシステム開発などに用いられています。

0グッド

0クリップ

投稿2021/07/12 13:51

前提・実現したいこと

 prologを使って、転置行列を作成するプログラムを他の人が書いたものを参考にして書いてみたのですが、途中の処理で分からない部分があります。transpose/2の再帰を終えた後、戻ると思うのですが、なぜその時にL3に要素が挿入されていくのでしょうか。デバッグ機能で動かしてみましたが、よく分かりませんでした。
分かりづらい文章になっているかもしれませんが、良ければ回答してくださるとありがたいです。

該当のソースコード

prolog

1transpose([[]|_],[]). 2transpose(TL,[L1|L2]):- 3 transpose(TL,L3,L1), transpose(L3,L2). 4transpose([],[],[]). 5transpose([[A|R1]|R2],[R1|R3],[A|R4]):- 6 transpose(R2,R3,R4).

実行結果

?- rep1([[1,2,3],[2,4,5],[3,5,6]]). true. ?- rep1([[1,1,1],[2,2,2],[3,3,3]]). false.

補足情報(FW/ツールのバージョンなど)

SWI-Prolog

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問