-2

文字列の 2 つのツリーの違いを解釈する関数を実装する方法は? 例えば:

diff(["aaa","bbb",["ccc","ddd"],"eee"],
     ["aaa","bbx",["ccc","ddd"]]);

この関数は、「bbb」の編集と「eee」の削除を報告する必要があります。そのような機能を実装する方法は?

4

1 に答える 1

2

単純なテキスト diff の場合は、各ツリーをフラット ファイルに変換するだけです。

各サブノードの前にタブが追加されるように、ノードを行に変換します (ネストのレベルごとに 1 つのタブ)。次に、2 つのフラット ファイルで diff を実行します。例えば:

["aaa","bbb",["ccc","ddd"],"eee"]

(エスケープタブと改行):

aaaa
bbb
    ccc
    ddd
eee

数値測定が必要な場合は、diff 出力の行を数えます。

派手にしたい場合は、ノードごとに実行できますが、結果が何に使用されるかによっては、それは大変な作業になります。

于 2013-02-23T02:02:31.817 に答える