差分圧縮[終了]


20

この課題のために、差分を圧縮する必要があります。 diffは、2つの文字列の違いを表すデータです。 この課題のために、次のことができる1つ以上のプログラムを提供する必要があります。

  1. を入力AB、差分を出力します。C
  2. 入力AおよびC、および出力B
  3. 入力BおよびC、および出力A

目標は、diff Cをできるだけ小さくすることです。 diffは、文字列、数値、データのblobなど、何でもかまいません。サイズ(バイト数)だけが重要です。

Githubで見つけることができる 50のテストケースがあります。各テストケースは、スペースで区切られた2つのURLで構成されており、diffする必要がある2つのファイルを指します。(これらのテストケースは、PPCGメンバーのGithubプロファイルから作成されました。ありがとうございます!)

上記の3つのタスクはすべて、(各テストケースごとに)十分に電力が供給されたコンピューターで実行するのに1分未満かかります。

スコアは50個の差分すべての合計サイズ(バイト単位)に等しく、値が小さいほど優れています。プログラムでの差分のハードコーディングは許可されていません(ハードコーディングを防ぐためにテストケースを変更する権利を留保します)。diff(などdiffutils)を生成する組み込み関数は使用できません。


4
diffとは正確には何ですか?
コナーオブライエン

欲しいものは何でも、本当に。非公式に、間の違いを表して、A列AとをB
ネイサンメリル

1
リンクの腐敗:1ベースラインインデックスによるテストケースペアの番号付け。テストケース3、13、14、15、16、17、18、19、20、21の両方のペアはすべて404です。これらの外部では、他のすべてのケースを取得できました。
Hウォルターズ

3
この質問はほとんど回答がなく、テストケースとして使用していた古いリンクの多くが機能しなくなったため、この質問を終了します。質問を更新して、必要に応じて再度開いてください。
ネイサンメリル

1
できた GISTはgist.github.com/sethhillbrand/64066935e3f8c0fac75d75edd43c9ef8です。2 番目のファイルは、テストケースの残りの40ペアのuuencodeアーカイブです。
セス

回答:


0

私の答えは有効ですか?

set f [open commits.txt]
while {![eof $f]} {scan [gets $f] %s\ %s a b; puts [string compare $a $b]}
close $f

テスト可能:http ://www.tutorialspoint.com/execute_tcl_online.php ? PID=0Bw_CjBb95KQMNmd4QkxvQUFsTnM


1
複数のプログラムを提供する必要があります(diff同等のプログラムと同等のプログラムの両方patch)。場合はstring compare差分文字列、それは「ノー組み込みコマンド」のルールに違反します。(名前が示すように)文字列のみを比較する場合、パッチを再作成するのに十分な情報を残しません。

@ ais523:組み込みコマンドラインコマンドとして理解しました。私はそれstring compareがページを作成するための情報を生成しないことを知っていますが、それを求める質問には場所がありません。
-sergiol

「2.入力AとC、および出力B」からの質問。これは提出されたプログラムではできないことであり、実際にはプログラムではできません(十分な情報がないため)。

@ ais523:OK誤解しました。
-sergiol

@ ais523:「実際にはプログラムができなかった」というあなたの声明は正しいとは思わない。CがAとBの差分である場合、CとAが与えられると、Bは計算可能です。多分私はあなたの正確なポイントを逃した
セス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.