私は、Scheme でより多くのリストを交差させようとしていますが、少し助けが必要です。リストは次のようになります。
最初の二つ:
(((?x john) (?city new-york))
((?x mike) (?city chicago))
((?x mary) (?city london)))
と
(((?city chicago))
((?city new-york)))
最初のリストからすべてのリスト (たとえば A) を調べ、2 番目のリストにリスト (たとえば B) があるかどうかを調べて、A が B と共通の要素を少なくとも 1 つ持つようにする必要があります。そのような要素がない場合は、結果のリストには A が含まれません。上記の 2 つのリストの結果は次のようになります。
(((?x john) (?city new-york))
((?x mike) (?city chicago)))
リスト((?x mary) (?city london))
は のどのリストとも共通点がないため(((?city chicago) ((?city new-york)))
です。
結果のリストは、次のリストと交差する必要があります。
(((?x mike) (?game tennis))
((?x john) (?game air-hockey)))
結果リストの最初のリストは((?x john) (?city new-york))
と(?x john)
共通し((?x john) (?game air-hockey))
ているため、新しい結果リストでは最初のリストは次のようになります((?x john) (?city new-york) (?game air-hockey))
。このパターンに従って 2 番目のリストを取得する((?x mike) (?city chicago) (?game tennis))
と、新しい結果のリストは次のようになります。
(((?x john) (?city new-york) (?game air-hockey))
((?x mike) (?city chicago) (?game tennis)))
これは、少なくとも 1 つの共通要素を持つ 2 つのリストごとに、再結合を行い、それを新しい結果のリストに追加する必要があることを意味します。
私の質問は、これをSchemeで実装するのに少し助けてもらえますか? コードは必要ありません。使用する関数に関するいくつかのアイデアだけです:)。