0

次のリストの例では、最初の行に結果があり、2 番目の行にフィルターがあり、フィルター内のペアの少なくとも 1 つに一致する結果のみを保持する必要があります。

(((john . ?x) (new-york . ?city)) ((mike . ?x) (chicago . ?city)) ((mary . ?x) (london . ?city)))
(((new-york . ?city)) ((chicago . ?city)))

(((john . ?x) (new-york . ?city)) ((mike . ?x) (chicago . ?city)) ((mary . ?x) (london . ?city)))
(((john . ?x) (air-hockey . ?game)) ((mike . ?x) (tennis . ?game)))

私が抱えている問題は、結果とフィルターの両方に可変数のパラメーターがあり、比較のために一度に 1 つの要素を取り出す方法がわからないことです。これは宿題なので、いくつかのヒントを使用できます。

最初の例では、都市がフィルターに一致するため、一致は john と mike を意味します。2 番目の例では、プレイする各ゲームを結果に追加するだけです。

最初の行の各エントリをチェックする必要がありますが、matchが機能するには、2 行目のエントリの少なくとも 1 つに対して #t を取得する必要があります。

4

2 に答える 2

2

この文脈で「一致」が何を意味するのか、あなたの質問からはわかりません。おそらく最初に、最初の行から 1 つの要素を受け取り、2 行目から 1 つの要素を受け取り、それらが一致したときに "true" を返すヘルパー関数を作成することをお勧めします。

また、私は間違いなく最初にいくつかのテストケースを書きます:)。

于 2013-04-06T21:37:08.850 に答える
1

これは、ここで尋ねられたのと同じ質問だと思います。私の回答を見てください。

于 2013-04-06T22:19:14.387 に答える