アラインメントとは、述語が 2 つのリストを受け取ることを意味します。そして、配置リスト内のすべての項目が実際に他の両方のライトの要素であることを確認します。また、順序に関する要件があるため、配置リスト内のすべての項目が他の両方の入力ライトのメンバーであることを確認するだけでは除外されます。メンバーをチェックするだけでは、有効な配置は反転しても有効になります。もちろん、これは間違っています。
Example:
?- mxAli([4,2,9,8],[1,9,5,2,3,8],A).
A=[2,8] or A=[9,8]
ここでは 8,2 と 8,9 は無効です。
実際にどのように順序をチェックするかを考えると、命令型言語のプログラミングに頭が下がります。どんな入力でも大歓迎です。しかし、すぐに答えを出さないでください。何について読むべきかについてのヒントが欲しいのです。(これを言わなければならないのは、私がこのサイトで非常に良い助けを得ているので、これを指摘しないとあまりにも不正行為に近いからです)。
私の考えでは、 I または prolog は、現在の要素のインデックスの後に検索を続行する必要があります。それは逆アラインメントを無効にしますか?
編集:両方のリストで現在の要素のインデックスの後に、検索を続行する必要があります。上記の例のように、2 が見つかると、インデックス 2 とインデックス 5 で次の要素の検索を開始します (最初の要素は 1 です)。