Fark sıkıştırma [kapalı]


20

Bu zorluk için, bir fark sıkıştırmanız gerekir. Fark iki dizge arasındaki farkı temsil eden bazı verilerdir. Bu zorluk için aşağıdakileri yapabilen bir veya daha fazla program sağlamanız gerekir:

  1. Giriş Ave Bçıkış farkıC
  2. Giriş Ave CçıkışB
  3. Giriş Bve CçıkışA

Amaç farkı Cmümkün olduğunca küçük yapmaktır . Fark herhangi bir şey olabilir: bir dize, bir sayı, bir veri bloğu. Sadece boyutu (bayt sayısı) önemsiyoruz.

Github'da bulabileceğim 50 test vakam var . Her test senaryosu, fark etmeniz gereken 2 dosyayı işaret eden, boşlukla ayrılmış iki URL'den oluşur. (Bu test senaryoları PPCG üyelerinin Github profillerinden kaynaklanmıştır. Teşekkürler!)

Yukarıdaki her üç görevin de makul düzeyde çalışan bir bilgisayarda (her test durumu için) bir dakikadan az sürmesi gerekir.

Puanınız tüm 50 farkın toplam boyutuna (bayt cinsinden) eşittir, daha düşüktür. Programınızdaki sabit kodlama farklarına izin verilmez (Sabit kodlamayı önlemek için test senaryolarını değiştirme hakkını saklı tutarım). Fark (benzeri diffutils) üreten yapılara izin verilmez.


4
Bir fark tam olarak nedir?
Conor O'Brien

Olmasını istediğiniz her şey, gerçekten. Gayrı, onun bir dize arasındaki farkları temsil ettiği AveB
Nathan Merrill

1
Daha fazla bağlantı çürümesi: test durumu çiftlerini 1 taban çizgi dizinine göre numaralandırma; her iki test vakası çifti 3, 13, 14, 15, 16, 17, 18, 19, 20, 21 404'tür. Bunların dışında, her iki vakayı da almayı başardım.
H Walters

3
Bu soruyu kapatıyorum çünkü büyük ölçüde cevapsız ve test vakaları olarak kullandığım eski bağlantıların çoğu artık çalışmıyor. Soruyu güncellemekten çekinmeyin ve isterseniz tekrar açın.
Nathan Merrill

1
Bitti. GIST gist.github.com/sethhillbrand/64066935e3f8c0fac75d75edd43c9ef8 İkinci dosya, kalan 40 test örneği çiftinin uuen kodlu bir arşividir.
Seth

Yanıtlar:


0

Cevabım geçerli mi?

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

test edilebilir: http://www.tutorialspoint.com/execute_tcl_online.php?PID=0Bw_CjBb95KQMNmd4QkxvQUFsTnM


1
Birden çok program (hem diffeşdeğer hem de patcheşdeğer) sağlamanız gerekir . string compareFarklı dizeler varsa , "yerleşik yok" kuralını ihlal eder. Yalnızca dizeleri karşılaştırırsa (adından da anlaşılacağı gibi), bir düzeltme ekini yeniden oluşturmak için yeterli bilgi bırakmaz.

@ ais523: builtins komut satırı komutları olarak anladım. Bu string comparebir sayfa oluşturmak için bilgi oluşturmaz biliyorum , ama soru soran yer yoktur.
sergiol

"2. A ve C girişi ve B çıkışı" sorusundan. Bu, gönderilen programınızın yapamayacağı ve aslında hiçbir programın yapamayacağı bir şeydir (yeterli bilgi olmadığı için).

@ ais523: Tamam yanlış anladım.
sergiol

@ ais523: "Aslında hiçbir programın yapamayacağı" ifadenizin doğru olduğunu düşünmüyorum. C, A ve B arasındaki fark ise, C ve A verildiğinde, B hesaplanabilir. Belki tam noktanızı kaçırdım
Seth
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.