Nén khác nhau [đóng]


20

Đối với thử thách này, bạn cần nén một diff. Một khác biệt là một số dữ liệu đại diện cho sự khác biệt giữa hai chuỗi. Đối với thử thách này, bạn cần cung cấp một hoặc nhiều chương trình có thể:

  1. Đầu vào AB, và đầu ra khác,C
  2. Đầu vào AC, và đầu raB
  3. Đầu vào BC, và đầu raA

Mục tiêu là làm cho diff C, càng nhỏ càng tốt. Khác biệt có thể là bất cứ điều gì: một chuỗi, một số, một đốm dữ liệu. Chúng tôi chỉ quan tâm đến kích thước (số byte).

Tôi có 50 trường hợp thử nghiệm có thể tìm thấy trên Github . Mỗi trường hợp thử nghiệm bao gồm hai URL được phân tách bằng dấu cách trỏ đến 2 tệp bạn cần khác. (Những trường hợp thử nghiệm này có nguồn gốc từ hồ sơ Github của thành viên PPCG. Cảm ơn tất cả!)

Tất cả ba tác vụ trên phải mất dưới một phút để chạy trên máy tính có công suất hợp lý (đối với từng trường hợp thử nghiệm).

Điểm của bạn bằng tổng kích thước (tính bằng byte) của tất cả 50 khác, thấp hơn là tốt hơn. Hardcoding diffs trong chương trình của bạn không được phép (Tôi bảo lưu quyền thay đổi các trường hợp thử nghiệm để ngăn chặn mã hóa cứng). Nội dung tạo ra khác biệt (như diffutils) không được phép.


4
Chính xác thì khác là gì?
Conor O'Brien

Bất cứ điều gì bạn muốn nó được, thực sự. Một cách không chính thức, đó là một chuỗi đại diện cho sự khác biệt giữa AB
Nathan Merrill

1
Thêm liên kết thối: đánh số cặp trường hợp kiểm tra theo chỉ số dòng 1 cơ sở; cả hai cặp trường hợp thử nghiệm 3, 13, 14, 15, 16, 17, 18, 19, 20, 21 đều là 404. Ngoài những trường hợp này, tôi đã tìm cách lấy lại mọi trường hợp khác.
H Walters

3
Tôi đang đóng câu hỏi này vì phần lớn chưa được trả lời và nhiều liên kết cũ tôi đang sử dụng làm trường hợp thử nghiệm không còn hoạt động. Hãy cập nhật câu hỏi và mở lại nếu bạn muốn.
Nathan Merrill

1
Làm xong. GIST là gist.github.com/sethhillbrand/64066935e3f8c0fac75d75edd43c9ef8 Tệp thứ hai là một kho lưu trữ uuencoding của 40 cặp trường hợp thử nghiệm còn lại.
Seth

Câu trả lời:


0

Câu trả lời của tôi có hợp lệ không?

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

có thể kiểm tra trên: http://www.tutorialspoint.com/execute_tcl_online.php?PID=0Bw_CjBb95KQMNmd4QkxvQUFsTnM


1
Bạn cần cung cấp nhiều chương trình (cả difftương đương và patchtương đương). Nếu string comparekhác chuỗi, nó vi phạm quy tắc "không có nội dung". Nếu nó chỉ so sánh các chuỗi (như tên gợi ý), thì nó không để lại đủ thông tin để tạo lại một bản vá.

@ ais523: nội dung Tôi hiểu nó là các lệnh dòng lệnh. Tôi biết rằng string comparekhông tạo ra thông tin để tạo một trang, nhưng không có chỗ trong câu hỏi yêu cầu nó.
sergiol

Từ câu hỏi, "2. Nhập A và C, và đầu ra B". Đây là điều mà chương trình đã gửi của bạn không thể làm được và trên thực tế không có chương trình nào có thể làm được (vì nó không có đủ thông tin).

@ ais523: OK tôi hiểu lầm.
sergiol

@ ais523: Tôi không nghĩ tuyên bố của bạn là chính xác "thực tế không có chương trình nào có thể làm được". Nếu C là độ lệch giữa A và B, thì cho C và A, B có thể tính được. Có lẽ tôi đã bỏ lỡ điểm chính xác của bạn
Seth
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.