前提・実現したいこと
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
あなたの回答
tips
プレビュー