2 つのプログラムのコード行 (コメント、中括弧、空白などを除く) をカウントし、それらを比較するプログラムがあります。あるプログラムのすべての行を 1 つのリストに入れ、別のプログラムの行を別のリストに入れます。次に、2 つの間で同一の行をすべて削除します。1 つのリストは、プログラム 2 を取得するためにプログラム 1 に追加されたすべての行であり、もう 1 つのリストは、プログラム 2 を取得するためにプログラム 1 から削除されたすべての行です。
ここで、プログラム 1 のコードが何行変更されてプログラム 2 になるかを検出する方法が必要です。レーベンシュタイン距離のアルゴリズムを見つけましたが、うまくいくようです。距離と文字列の長さを比較してパーセンテージを変更する必要があるだけで、しきい値の適切な値を見つける必要があります。
ただし、私の問題は次のとおりです。レーベンシュタイン距離で比較する2つの文字列をどのように知ることができますか? 私の最善の推測は、ネストされた for ループを作成し、1 つのプログラムを別のプログラムのすべての行に対して 1 回ループして、すべての行を他のすべての行と比較し、差異しきい値を満たす Distance を探すことです。しかし、それは非常に効率が悪いようです。これを行う他の方法はありますか?
これはソフトウェア エンジニアリング クラス用であることを付け加えておきます。技術的には宿題ですが、必要なリソースを使用することは許可されています。アルゴリズムを探しているだけですが、C# を使用していることをお知らせします。