を書く:は、だから私は(ラケットのコースのための模擬試験の上に行く)いくつかのコードに取り組んでいる、と私は次のことを行う必要がありラケット
リストを取る関数cached-assoc
を書きますxs
と数値n
を返し、1つの引数v
をとり、(assoc v xs
)と同じものを返す関数を返します。
最近の結果のn要素キャッシュを使用して、おそらくassocを呼び出すよりも速くこの関数を実行する必要があります。キャッシュは、cached-assocの呼び出しによって作成され、cached-assocによって返された関数が呼び出されるたびに使用され、おそらくは変更された長さnのベクトルでなければなりません。
キャッシュは空になります(すべての要素#f)。 cached-assocから返された関数が呼び出されると、最初にキャッシュがその答えをチェックします。存在しない場合は、assoc
とxs
を使用して答えを返し、結果が#f
でない場合(xsに一致するペアがある場合)、 を返す前にペアをキャッシュに追加します(ベクターセットを使用してください)。 。次いで、一対のは、それが位置0
に置かれ、キャッシュに追加された最初の時間は、次の対が位置n - 1
まで等の位置1に入れて:
キャッシュスロットがラウンドロビン方式で使用されています0
に戻って(既にそこにあるペアを置き換えて)、1
などの位置に戻します。
これを行う方法はわかりません。
あなたは特に何について考えていませんか?または、おそらく、あなたは何をするのか考えているでしょうか?確かに、あなたは_何かを知っていなければなりません。そうでなければ、あなたはもっと大きな問題を抱えています。 –