我有一个程序计算两个程序的代码行数(不包括注释、大括号、空格等),然后比较它们。它将一个程序的所有行放在一个列表中,将另一个程序的行放在另一个列表中。然后它会删除两者之间相同的所有行。一个列表是添加到程序 1 以获取程序 2 的所有行,另一个列表是从程序 1 中删除的所有行以获取程序 2。
现在我需要一种方法来检测程序 1 中的多少行代码已被修改以获取程序 2。我找到了 Levenshtein 距离的算法,它似乎可以工作。我只需要将距离与字符串的长度进行比较即可获得百分比变化,并且我需要为阈值提供一个好的值。
但是我的问题是:我怎么知道要比较哪两个字符串来比较 Levenshtein 距离?我最好的猜测是有一个嵌套的 for 循环,并为另一个程序中的每一行循环一次程序,以将每一行与其他每一行进行比较,以寻找满足我的差异阈值的距离。但是,这似乎非常低效。有没有其他方法可以做到这一点?
我应该补充一下,这是针对软件工程课程的。这在技术上是家庭作业,但我们可以使用我们需要的任何资源。虽然我只是在寻找一种算法,但我会让你知道我正在使用 C#。