一般的な Lisp を使用して 2 つのビット ベクトル間の距離を計算する際に問題が発生しています。
私はLispを初めて使用し、これが人工知能の宿題の最後の宿題の問題であり、私が遭遇している問題は構文の問題であると信じています。
質問は次のとおりです。
1 と 0 のリストで表される同じ長さの 2 つのビット ベクトル間に再帰関数 DISTANCE を記述します。例えば、
(距離 '(1 0 1 1) '(0 1 0 1))
答え: 3
ベクトルの長さが異なる場合、何をしなければならないかを議論します。
私の理解では、2 つのビット ベクトル間の距離は、単純に 2 つを XOR してから 1 をカウントアップすることです。
この例を使用すると、1011 ^ 0101 = 1110 となり、3 になります。
これが距離を計算する正しい方法であると仮定すると、私の問題は、これを再帰的にすることに加えて、lisp で XOR する方法を見つけることです。
logxor
2 つのリストを取得して(ここに表示)のような形式に変換し、結果のリストの 1 を数え上げるにはどうすればよいでしょうか?
やろうとすると(logxor '(1 0 1 1) '(0 1 0 1))
、'(1 0 1 1) は整数ではないためlogxor
、リストでは機能しないようで、途方にくれます。
あなたが提供できる助けをいただければ幸いです
ありがとう!