問題タブ [n-way-merge]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
html - DIFF ユーティリティは 2 つのファイルに対して機能します。一度に 2 つ以上のファイルを比較する方法は?
そのため、ユーティリティ Diff は 2 つのファイルに対して必要なように機能しますが、一度に 2 つ以上のファイル、おそらく一度に 10 までのファイルと比較する必要があるプロジェクトがあります。これには、これらすべてのファイルを互いに並べて配置する必要もあります。私の調査では実際には何も判明していません.vimdiffは、一度に4つを比較する機能を備えているため、これまでのところ最高のようです.
私の質問: 一度に 2 つ以上のファイルを比較するユーティリティ、または diff/vimdiff をハックして複数の比較を行う方法はありますか? 比較するファイルは比較的短いので、遅すぎることはありません。
前もって感謝します!
header - 20個ほどのファイル間の類似点のみを表示しますか?
HTMLページでいっぱいのディレクトリがあるとしましょう。ヘッダーとフッターは基本的に同じですが、すべてのページの同じ部分だけを表示できるようにしたいと思います。これをn-wayマージと呼びたいのですが、それはそうではありません。すべてのファイルのヘッダーとフッターの間の類似点だけを探しています。
(そして私のヘッダーは、<head>タグだけを意味するのではなく、ページの類似した部分を意味します)。
注:20個のhtmlファイルがあります。
これを行うツールの名前はありますか?
diff - 垂直比較付きのn-way差分ツールはありますか?
複数のファイルを一緒に比較するために使用できるdiffuseを使い始めましたが、20個のファイルを一緒に比較する必要がある場合、行を水平方向に比較できないため、20個すべてから1行を考えていました。ファイルは水平に表示されます。
algorithm - 5つの異なるソースの比較
2〜5個の「ファイル」(実際には2〜5セットのデータベース行ですが、同様の概念)を比較する関数を作成する必要がありますが、その方法がわかりません。結果の差分は、2〜5個のファイルを並べて表示する必要があります。出力には、追加、削除、変更、および変更されていない行と、各ファイルの列が表示されます。
複雑さを低く抑えるために、行をトラバースするにはどのアルゴリズムを使用する必要がありますか?ファイルあたりの行数は10,000未満です。合計データサイズはメガバイトの範囲であるため、おそらく外部マージは必要ありません。もちろん、シンプルで読みやすいコードもいいでしょうが、必須ではありません。
編集:ファイルは未知のソースから派生している可能性があり、他の1〜4個のファイルと比較できる「オリジナル」はありません。すべてのファイルは、何らかの方法で他のファイルと比較する必要があります。
編集2:私、またはむしろ私の同僚は、出力順序が無関係であるため、コンテンツがソートされる可能性があることに気づきました。このソリューションは、アプリケーションのこの部分に追加のドメイン知識を使用することを意味しますが、diffの複雑さはO(N)であり、コードはそれほど複雑ではありません。この解決策は単純であり、バウンティを閉じるときにこの編集に対する回答は無視します。しかし、私は将来の参考のために私自身の質問に答えます。
python-2.7 - k-wayマージソートpython
これまでに取得した出力: 入力配列:
[[5, 10, 15, 20], [6, 3, 16, 9], [2, 9, 26, 40], [8, 22, 23, 24]]
[5]
[5、6]
[5、6、2]
[5、6、2、8]
リストのサイズ: 4
1回の反復で
[5、8、2、6]
0 回の反復で
[8、6、2、5]
ヒープ化された配列: [8, 6, 2, 5]
降順で並べ替えられた配列 [8]